IA32 gnu assembly 32 bit instruction pretend to be 64 bit instruction

我用GNU编译器尝试了如下代码,结果成功的发现,他们是一样的,从机器指令层面讲

.code32
.byte 0x48
xorl %eax, %eax

等同于64位代码
.code64
xorq %rax, %rax


利用这个特性,你可以轻松伪造出64位的代码


32bit code 64bit code
.code32
.byte 0x48
xorl %eax, %eax
.code64
xorq %rax, %rax
.code32
pushl%eax
.code64
pushq %rax
.code32
.byte 0x48
iretl
.code64
iretq

你可能感兴趣的:(IA32 gnu assembly 32 bit instruction pretend to be 64 bit instruction)