View Full Version : [assembly] __asm (non funziona con GCC)
Ciao a tutti.. siccome ho problemi con il compilatore GCC qualcuno per favore può convertirmi questo codice? ho visto che usa un'altra sintassi (AT&T?!) ma io non saprei proprio come cambiarlo xkè non conosco l'assembly.
__asm {
mov eax, addr
call addr
mov addr, eax
}
__asm {
mov eax, addr
push cbSize
push pInputs
push nInputs
call addr
mov addr, eax
}
grazie
cdimauro
21-01-2008, 07:58
Sintassi AT&T? Vade retro!
Usa NASM, che ti permette di usare quella "tradizionale" (Intel / MASM / TASM et similia). ;)
Usa NASM, che ti permette di usare quella "tradizionale" (Intel / MASM / TASM et similia). ;)
Ma non nel codice inline...
Comunque dovrebbe essere così, se mi ricordo bene.
__asm {
movl addr, %eax
call addr
movl %eax, addr
}
__asm {
movl addr, %eax
pushl cbSize
pushl pInputs
pushl nInputs
call addr
movl %eax, addr
}
variabilepippo
21-01-2008, 09:52
qualcuno per favore può convertirmi questo codice?
Perché non lo chiedi direttamente al compilatore? Aggiungi l'opzione -masm=intel alla linea di comando di GCC:
gcc pippo.c -masm=intel
// pippo.c
#include <stdio.h>
#include <string.h>
int main (void)
{
__asm (
"xor eax, eax\n"
"mov ecx, 3\n"
);
return 0;
}
Perché non lo chiedi direttamente al compilatore? Aggiungi l'opzione -masm=intel alla linea di comando di GCC:
Azz...non lo sapevo :D
variabilepippo
21-01-2008, 09:58
Azz...non lo sapevo
Abbiamo sempre qualcosa di nuovo da imparare, ed il forum serve anche per questo... ;)
ilsensine
21-01-2008, 10:13
Perché non lo chiedi direttamente al compilatore? Aggiungi l'opzione -masm=intel alla linea di comando di GCC:
Perché non è la fine della storia.
Da lì puoi accedere solo a variabili globali; le variabili locali devono essere passare come "input" secondo l'usuale sintassi asm/gcc.
Inoltre occorre specificare l'elenco dei registri "clobbered", se presenti.
ilsensine
21-01-2008, 10:15
C'è anche questo modo, che non richiede -masm=intel:
asm(
" .intel_syntax noprefix \n"
<blocco asm...>
" .att_syntax \n"
<blocco in/out e clobbered>
);
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.