Jor*_*yen 2 x86 assembly protected-mode disassembly
嘿,我想知道一些仅在长模式下有效的指令。
例如0f 20 55 - mov rbp, cr2。
我正在引用 ref.x86asm.net xml 映射。
根据xml,该指令的操作方式是e:
e 适用于 64 位模式。不考虑SMM。第63章
现在,如果我查看GCC或capstone等反汇编程序,字节流0f 20 55将被解码为mov ebp, cr2保护模式,即使参考文献说它不应该在 x64 以外的模式下可用。
所以我想知道我是否不理解某些东西或者这些反汇编程序有问题?
在保护模式和长模式下可以进行控制寄存器的移动,使用相同的编码,但具有不同的含义。mov rbp, cr2仅在长模式下可用(显然,它写入仅存在于长模式下的64位GPR)并且mov ebp, cr2仅在保护模式下可用(在长模式下本质上不是不可能的,但其编码被重用于mov rbp, cr2,就像编码一样ofpush eax被重新用来表示push rax)。根据模式的不同,反汇编程序会以不同的方式正确解释相同的机器代码。