c00*_*0fd 5 windows 64-bit x86-64 opcode disassembly
我一直试图了解0x40ASM x64 指令的REX 操作码的用途。例如,在 Kernel32.dll 的这个函数序言中:
如您所见,它们push rbx用作:
40 53 push rbx
Run Code Online (Sandbox Code Playgroud)
但仅使用53h操作码(不带前缀)也会产生相同的结果:
根据此站点,REX 前缀的布局如下:
所以40h操作码似乎没有做任何事情。有人可以解释它的目的吗?
这些04xh字节(即040h,041h... 04fh)确实是 REX 字节。正如您在问题中列出的那样,下半字节中的每一位都有其含义。该值040h表示REX.W、REX.R、REX.X和REX.B都是0。这意味着添加此字节不会对该指令执行任何操作,因为您不会覆盖任何默认的 REX 位,并且它不是以 AH/BH/CH/DH 作为操作数的 8 位指令。
而且, 、X、R位B都对应一些操作数。如果您的指令不消耗这些操作数,则相应的 REX 位将被忽略。
| 归档时间: |
|
| 查看次数: |
1926 次 |
| 最近记录: |