2016-01-26 19 views
1

指针可以用作内存引用的偏移量和基地吗?inline assemblyC/C++指针作为内存引用的基础?

例如:

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

我不知道我跟你的榜样。正如所写,rbx的内容未定义?也许你的意思是这样的:'for(unsigned long long d = 0; d

回答

-1

一种选择是使用一个额外的寄存器:

int main(){ 
char a[16],b[16]; 
asm volatile("\ 
lea %0,%%rcx\n\ 
movq $123,(%%rcx,%%rbx,1)" 
:"=m"(*a)::"rbx","rcx"); 
}