问题描述
我正在尝试调和x86中寻址内存的主要类别之间的差异,并希望了解我是否正确。如果我对事情的理解正确,则可以使用三种广泛的方法,每种方法都有自己的语法。
以下示例将src
用于不同的地址方法:
-
文字/即时值。
-
例如,将十进制值
10
移到%eax
中:mov $10,%eax
-
-
直接注册寻址。
-
直接:例如,将
%ebx
中的值移动到%eax
中:mov %ebx,%eax
-
间接:这使用#3中讨论的格式。
-
-
偏移/索引/间接寻址:
-
例如,相对于寄存器:
mov -4(%ebp),%eax
-
例如,相对于标签或地址:
mov string(,%edi,4),%eax
-
但是,我的主要问题是三个主要类别不能互换使用。
例如,我们不能在offset
寻址中使用立即数,例如:
mov $2(%edi),%eax
或者,在进行直接寄存器寻址时,我们不能使用偏移量,例如:
mov %eax(,2),%eax
是对内存寻址的三种主要形式的正确理解,还是这里我缺少一些东西?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)