"Istruzioni dell'assemblatore con C Expression Operands"
asm volatile("jmp *%0" : : "r" (addr));
Domanda
In questo momento, chiamo l'istruzione di salto con il gruppo in linea in C come segue:
int register eax asm("eax") = addr; // addr is a memory address
asm("jmp *%eax");
Voglio farlo senza dover impostare altri valori di registro (ad esempio, voglio fare è qualcosa del genere):
asm("jmp *(addr)");
Qual è il modo giusto per farlo? Cioè, come posso "inserire" la variabile CA nella chiamata ASM?
Ubuntu 12.04 64-bit, Intel x86 a 64 bit processore, GCC versione 4.7.4.
Soluzione
"Istruzioni dell'assemblatore con C Expression Operands"
asm volatile("jmp *%0" : : "r" (addr));