gpt4 book ai didi

assembly - x86/x64添加位移寻址

转载 作者:行者123 更新时间:2023-12-04 05:07:43 25 4
gpt4 key购买 nike

我正在为x86/x64 CPU指令编写编译器,但似乎无法弄清人们所说的“位移”地址是什么意思。例如,Add指令在此处详细说明:
http://www.c-jump.com/CIS77/CPU/x86/X77_0150_encoding_add_edx_displacement.htm

我只是试图实现将寄存器添加到普通内存地址的添加指令。问题是,该地址是“置换地址”。这是否意味着该地址是一个有符号的值,即与指令位置的偏移量?

最佳答案

x86中有几种不同形式的间接操作数:

  • [reg]
  • [reg +位移]
  • [置换]
  • [reg *常数+ reg]
  • [reg *常数+ reg +位移]

  • “位移”只是一个常量,它被添加到地址的其余部分。如果除常量外没有地址的其他部分,则仍称为“位移​​”。这主要是为了与其他寻址形式保持一致。

    另一种查看方式是所有地址都是以下形式

    [reg *常数+ reg +位移]

    每个组件允许的值为0。

    [位移]形式只是其中位移以外的所有分量均为零的编码。

    作为编译器作者,后两种形式特别有趣。它们使在一条指令中轻松编码 pArray[index]->field + 1之类的内容变得容易。

    关于assembly - x86/x64添加位移寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13329611/

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