我是汇编语言的新手,对 AT&T 语法中被认为是“立即数”的东西有点困惑。具体来说,我知道“$”用于表示立即数或地址,“%”用于表示寄存器,但后来我开始访问“数组”的元素:

movl mem_location(%ebx,%ecx,4), %eax

为什么这个数字 4 前面没有“$”,它不是一个立即数吗?

感谢您的时间

最佳答案

我认为您误解了即时值(value)的含义。立即值意味着该值包含在操作码中。如果它指的是内存(数组)或寄存器,则不是立即数。正如 Jester 指出的那样,4 实际上是内存寻址的比例因子。这不被视为立即值。

立即值的示例类似于 mov eax, 123

另请注意,立即值是一个汇编概念(它适用于许多体系结构),而不是特定于 AT&T 语法的东西。

关于 assembly 立即值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28665048/

10-11 18:24