如果我必须用这样的寻址来翻译一个简单的 C 函数:
void f(int *a, int *b, long i){
a[i] = b[i];
}
在 System V AMD X86-64(AT&T 标准)程序集中,使用index
,base
寄存器加一个scale
值的间接寻址。
那么,因为在汇编中没有任何类型的指针算术,所以比例值应该是4
整数指针?
这段代码正确吗?
f:
pushq %rpb # editor's note: typo for %rbp
movq %rsp, %rbp
movl (%rsi, %rdx, 4), %eax
movl %eax, (%rdi, %rdx, 4)
popq %rbp
ret