为什么modr/m字节中的操作数1会根据解码模式而变化

问题描述 投票:0回答:1

我试图弄清楚为什么当将解码模式从 x86 更改为 x64 时,指令从 add [eax], al 更改为 add [rax], al 。

指令字节为00 00

我认为这可能是因为它被用来指定一个内存位置,但我找不到任何东西来证明它

assembly x86 x86-64 64-bit instruction-encoding
1个回答
0
投票

这是因为默认地址大小在 64 位模式下为 64 位,在 32 位模式下为 32 位。

您可以应用

67
地址大小覆盖前缀来在 32 位模式下选择 32 位地址大小,但 64 位地址大小在 64 位模式之外不可用。

© www.soinside.com 2019 - 2024. All rights reserved.