【发布时间】:2016-01-26 07:46:55
【问题描述】:
指针可以用作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");
}
【问题讨论】:
-
我不确定我是否遵循您的示例。如所写, rbx 的内容是未定义的?也许你的意思是这样的:
for (unsigned long long d = 0; d < sizeof(b); d++) asm ("movq $123,(%1,%2)" : "=m"(a) :"r"(a), "r"(d));
标签: gcc g++ inline-assembly