汇编即时值

Assembly immediate values

我是汇编语言的新手,对 AT&T 语法中的 "immediate value" 感到有点困惑。具体来说,我知道“$”用于表示立即值或地址,“%”用于表示寄存器,但后来我开始访问 "arrays":

的元素
movl mem_location(%ebx,%ecx,4), %eax

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

感谢您的宝贵时间

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

立即值的一个例子是mov eax, 123

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