首页 > 代码库 > 一个操作系统的实现中jmp dword SelectorCode32:0的理解

一个操作系统的实现中jmp dword SelectorCode32:0的理解

	; 准备切换到保护模式
	mov	eax, cr0
	or	eax, 1
	mov	cr0, eax

	; 真正进入保护模式
	jmp	dword SelectorCode32:0	; 执行这一句会把 SelectorCode32 装入 cs,
					; 并跳转到 Code32Selector:0  处

这段时间在一个操作系统的实现

好书啊,感谢作者

这两天一直纠结在    ;
    jmp    dword SelectorCode32:0    ; 

这句话,看了些资料,现将自己理解的分享一下,不对的地方,大家指点一下

首先经过上面三句话之后,已经进入到了保护模式了

SelectorCode32应该是段选择子,而现在还是16位下,如果不加dword 后面的偏移地址是16位  也就是 0000h

而32下的偏移地址应该是32位,于是nasm提供了这样一个用法   jmp    dword SelectorCode32:0    ; 

表示后面的0是32位的,这几句代码的下面就是32位的代码了,其虚拟地址是从0开始的

经过段描述符就到了32位的代码了


一个操作系统的实现中jmp dword SelectorCode32:0的理解