ASM x64 中 40h REX 操作码的用途是什么?

2023-12-26

我一直在试图理解这个的目的0x40ASM x64 指令的 REX 操作码。例如,在 Kernel32.dll 的函数序言中:

正如你所看到的,他们使用push rbx as:

40 53      push        rbx 

但仅使用53h操作码(不带前缀)也会产生相同的结果:

根据这个网站 https://www-user.tu-chemnitz.de/~heha/viewchm.php/hs/x86.chm/x64.htm#Encoding,REX前缀的布局如下:

So 40h操作码似乎没有做任何事情。有人可以解释其目的吗?


the 04xh字节(即040h, 041h... 04fh) 确实是 REX 字节。正如您在问题中列出的那样,下半字节中的每一位都有其含义。价值040h意思是REX.W, REX.R, REX.X and REX.B都是0。这意味着添加这个字节不会对该指令执行任何操作,因为您没有覆盖any默认REX位,并且它不是以AH/BH/CH/DH作为操作数的8位指令。

此外,X, R and B位都对应于一些操作数。如果您的指令不消耗这些操作数,则相应的 REX 位将被忽略。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASM x64 中 40h REX 操作码的用途是什么? 的相关文章

随机推荐