我是汇编语言的新手,对AT&T语法中被认为是"直接值"的东西感到有些困惑.具体来说,我理解"$"用于表示立即值或地址,"%"用于表示寄存器,但后来我访问"数组"的元素:
movl mem_location(%ebx,%ecx,4), %eax
Run Code Online (Sandbox Code Playgroud)
为什么这个数字4之前没有"$",这不是一个直接值吗?
感谢您的时间
我认为你误解了直接价值的含义.立即值表示该值包含在操作码中.如果它指的是内存(数组)或寄存器,则不是立即的.正如Jester所指出的那样,4实际上是内存寻址的比例因子.这不被视为直接价值.
立即价值的一个例子就是这样的mov eax, 123.
还要注意,立即值是一个汇编概念(它适用于许多架构),而不是特定于AT&T语法的东西.
| 归档时间: |
|
| 查看次数: |
5507 次 |
| 最近记录: |