是否允许单个访问跨越x86 1之间0和之间的边界?0xFFFFFF...
例如,假设eax(rax在64位中)为零,则允许以下访问:
mov ebx, DWORD [eax - 2]
Run Code Online (Sandbox Code Playgroud)
如果答案不同,我对x86(32位)和x86-64都很感兴趣.
1当然,鉴于该区域已在您的流程中映射等.
我发现通常程序员在启动加载程序的第一行就对寄存器(有时是段)进行修正,并且他们通常会为此建议。例如:
inc cx
dec bx
inc bp
dec di
xor ax, ax
Run Code Online (Sandbox Code Playgroud)
我不知道我知道的是:BIOS在引导过程中清除了所有寄存器。
在引导加载程序中初始化寄存器和段是个好习惯吗?如果是,默认寄存器,段和指针值是什么(可能取决于芯片组)?