相关疑难解决方法(0)

使用MOV指令将SS设置为0x0000是否应该在64位模式下导致#GP(0)故障?

这个问题是受r / osdev中Reddit问题启发的,除了这个问题集中在SS寄存器上。可能有人说过RTFM(代表ISA条目MOV),但是当出现此问题时,即使在OS开发人员中,它也会得到不同的答案。


问题:使用MOV指令将SS设置为0x0000是否会#GP(0)在64位模式下引起一般性保护故障?例如:如果我处于64位模式,并且当前特权级别(CPL)为0,我应该期望看到#GP(0)带有以下代码段的:

NULL_SEL_RPL0  EQU 0    
mov eax, NULL_SEL_RPL0         ; EAX = 0x0000 = NULL Selector with
                               ;     Requested Privilege Level (RPL) 0. 
mov ss, eax                    ; Try to set SS with NULL selector 0x0000
                               ; Should this cause a #GP(0) fault?
Run Code Online (Sandbox Code Playgroud)

《 Intel x86指令集参考》所说的MOV是:

Operation
DEST ? SRC;
Loading a segment register while in protected mode results in special checks and …
Run Code Online (Sandbox Code Playgroud)

64-bit assembly x86-64 nasm osdev

9
推荐指数
1
解决办法
199
查看次数

标签 统计

64-bit ×1

assembly ×1

nasm ×1

osdev ×1

x86-64 ×1