gpt4 book ai didi

assembly - x86 中没有段的直接寻址?

转载 作者:行者123 更新时间:2023-12-03 06:27:16 29 4
gpt4 key购买 nike

使用 SIB 字节对内存操作数进行编码,允许对索引和基址使用“无寄存器”。所以这应该是一个有效的指令:

03 04 25 10 32 54 76添加eax,dword [0x76543210]

地址应该这样计算:1·0+0+0x76543210,并且不基于任何段寄存器。
在平面内存中,这不应该改变任何东西,但是如果ds不为零,这与add eax, dword ds:0x76543210不同吗?

最佳答案

在 16 位和 32 位操作模式中,指示无基址和无索引的 SIB 字节(即 04 +r 25)简单地编码 32 位地址,就像 modr/m 字节05 +r 可以。这不会影响分段,ds 在这两种情况下都用于添加段基地址。

在长模式(64 位模式)下,modr/m 字节 05 +r 表示 rip(分别为 eip)相对值地址,而 04 +r 25 表示绝对地址。例如:

8b 05 XX XX XX XX       is mov eax, [rip+XXXXXXXX]
8b 04 25 XX XX XX XX is mov eax, [XXXXXXXX]

关于assembly - x86 中没有段的直接寻址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45958502/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com