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.

È stato utile?

Soluzione

"Istruzioni dell'assemblatore con C Expression Operands"

asm volatile("jmp *%0" : : "r" (addr));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top