2016-01-26 1 views
1

Un pointeur peut-il être utilisé comme décalage et base d'une référence de mémoire avec inline assembly?Pointeur C/C++ comme base de référence de la mémoire?

Par exemple:

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

Peut-être quelque chose comme:

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

Je ne suis pas sûr que je suis votre exemple . Comme écrit, le contenu de rbx n'est pas défini? Peut-être que vous voulez dire quelque chose comme ceci: 'pour (unsigned longtemps long d = 0; d

Répondre

-1

Un choix est d'utiliser un registre supplémentaire:

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