Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 进入保护模式时出现VirtualBox Guru冥想错误_Assembly_X86_Virtualbox - Fatal编程技术网

Assembly 进入保护模式时出现VirtualBox Guru冥想错误

Assembly 进入保护模式时出现VirtualBox Guru冥想错误,assembly,x86,virtualbox,Assembly,X86,Virtualbox,我正在使用VirtualBox模拟x86 pc。我已经编写了一个进入保护模式的引导加载程序。但我总是会犯上师冥想的错误。这是我的密码: ; clear interrupts cli ; set up gdt xor eax, eax mov ax, ds shl eax, 4 add eax, gdt mov [gdtr + 2], eax mov eax, gdt_end sub eax, gdt mov [gdtr], ax lgdt [gdtr] ; enter protected mod

我正在使用VirtualBox模拟x86 pc。我已经编写了一个进入保护模式的引导加载程序。但我总是会犯上师冥想的错误。这是我的密码:

; clear interrupts
cli
; set up gdt
xor eax, eax
mov ax, ds
shl eax, 4
add eax, gdt
mov [gdtr + 2], eax
mov eax, gdt_end
sub eax, gdt
mov [gdtr], ax
lgdt [gdtr]
; enter protected mode
mov eax, cr0
or  al, 1
mov cr0, eax
; enter kernel
jmp 08h:0
我还测试了jmp 0x2000:0000,但这也不起作用。我做错了什么

PS:这是我的GDT代码:

; global descriptor table
gdt:
dq 0 ; null descriptor

; code descriptor kernel
dw 0x0000 ; base low word
dw 0x4000 ; limit low word
db 0x00   ; base high byte
db 0x40   ; flags
db 0x9A   ; access byte
db 0x02   ; base center byte

; data descriptor kernel
dw 0x0000 ; base low word
dw 0x4000 ; limit low word
db 0x00   ; base high byte
db 0x40   ; flags
db 0x92   ; access byte
db 0x02   ; base center byte
gdt_end:

根据我使用CentOS-6.5的经验,当您的应用程序需要更多的ram大小,而分配的ram大小或CPU使用超过100%时,就会出现“大师冥想”错误。
因此,增加分配的RAM大小是解决此问题的解决方案之一

关闭所有正在运行的虚拟机,然后从bios禁用虚拟化。然后重新启动。然后从bios启用虚拟化。重新启动。
这对我来说很有效

发布完整的代码,例如,我们无法判断您的gdt是否损坏。另外,学习使用调试器。@Jester添加了gdtcode@Jester在编写引导加载程序时很难使用调试器…@BlackBear如果您正在编写引导加载程序或操作系统,那么您已经可以使用调试器了。这并不特别困难,因为他使用的是一台虚拟机:P,相反,他没有给我们完整的代码,并希望我们以某种方式猜测缺失的部分并为他调试。不知道,这应该是可能的。GDT条目中的字段混乱,顺序应该是
下限
基低
基中心
访问
标志
基高