【发布时间】:2018-10-26 18:59:17
【问题描述】:
Computer Systems: a Programmer's Perspective 提供了一些 ATT 汇编示例。这是一个:
数组元素 A[i][j] 可以被复制到寄存器 %eax 以下代码:
(A in %rdi, i in %rsi, and j in %rdx) 1 leaq (%rsi,%rsi,2), %rax Compute 3i 2 leaq (%rdi,%rax,4), %rax Compute x_A + 12i 3 movl (%rax,%rdx,4), %eax Read from M[x_A + 12i + 4j]
前两条指令可以合并成吗
leaq (%rdi,%rsi,12), %rax
因为它还计算 x_A + 12i?
为什么这本书选择写两条指令呢?在其他示例中也会发生同样的情况。
谢谢。
【问题讨论】:
-
参见图 3-11。基本架构手册中的偏移(或有效地址)计算。