阐明了x86

问题描述

我正在尝试调和x86中寻址内存的主要类别之间的差异,并希望了解我是否正确。如果我对事情的理解正确,则可以使用三种广泛的方法,每种方法都有自己的语法。

以下示例将src用于不同的地址方法

  1. 文字/即时值。

    • 例如,将十进制值10移到%eax中:

      mov $10,%eax
      
  2. 直接注册寻址。

    • 直接:例如,将%ebx中的值移动到%eax中:

      mov %ebx,%eax
      
    • 间接:这使用#3中讨论的格式。

  3. 偏移/索引/间接寻址:

    • 例如,相对于寄存器:

      mov -4(%ebp),%eax
      
    • 例如,相对于标签或地址:

      mov string(,%edi,4),%eax
      

但是,我的主要问题是三个主要类别不能互换使用

例如,我们不能在offset寻址中使用立即数,例如:

mov $2(%edi),%eax

或者,在进行直接寄存器寻址时,我们不能使用偏移量,例如:

mov %eax(,2),%eax

是对内存寻址的三种主要形式的正确理解,还是这里我缺少一些东西?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)