指针是否可以用作inline assembly
的内存引用的偏移量和基数?
例如:
int main(){
char a[16],b[16];
asm volatile("\
movq $123,16(%%rsp,%%rbx,1)"
:"=m"(*a)::"rbx");
}
可能是这样的:
int main(){
char a[16],b[16];
asm volatile("\
movq $123,(%0,%%rbx,1)"
:"=m"(*a)::"rbx");
}
答案 0 :(得分:-1)
一种选择是使用一个额外的寄存器:
int main(){
char a[16],b[16];
asm volatile("\
lea %0,%%rcx\n\
movq $123,(%%rcx,%%rbx,1)"
:"=m"(*a)::"rbx","rcx");
}