gpt4 book ai didi

linux - 计算要获取的字节数,汇编

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:28 24 4
gpt4 key购买 nike

我正在计算“获取”需要多少字节。

我正在用汇编编写这段代码

jmp [2*eax]

列表文件中的命令是3个字节。

当我写这个命令时:

jmp [4*eax]

我得到了 7 个字节

有人知道为什么吗?

最佳答案

我怀疑你的汇编器很聪明,正在将 jmp [2*eax] 编码为 jmp [eax+eax] ,因为它不需要占用更少的字节需要位移。而 jmp [4*eax] 实际上等同于 jmp [4*eax+0x00000000],后者需要额外的 4 个字节用于位移。

它与 SIB(缩放索引字节)的工作有关。通常,这会以 base + index*scale + displacement 的形式对地址进行编码。 位移 是可选的,但前提是包含基数 寄存器。如果你想离开 base 寄存器,那么你必须包含一个 32 位 displacement

因此,要获得 eax*4,您需要使用 index*4 + displacement 的形式,即使您不需要那个 displacement .但是要获得 eax*2,您可以使用 base + index*scale 的形式(即 eax+eax*1),并且不必包含 位移.

关于linux - 计算要获取的字节数,汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17392997/

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