Joh*_*lén 6 assembly x86-64
我正在使用模拟器,我遇到的其中一个二进制可执行文件在过程开始时具有以下顺序
40 55
它40是REX前缀,但实际上没有设置任何REX位.英特尔软件开发人员手册的第2.2.1.7节规定,隐式引用堆栈指针的指令将具有64位宽度.由于55是push ?bp指令,似乎简单55就足以生成一个push rbp.那么为什么40前缀呢?
40
55
push ?bp
push rbp
Ros*_*dge 7
正如Jongware在他的评论中所述,忽略了40个REX前缀.你之所以看到这个,不是因为编译器坏了,而是因为编译器遵循Windows x64 ABI.函数需要以至少两个字节长的指令开头才能进行热修补.您可能还会看到其他带有无意义REX前缀的推送指令.
归档时间:
10 年,7 月 前
查看次数:
663 次
最近记录: