Oppure

Loading
01/01/10 15:52
Salve a tutti. Volevo sapere se era possibile, all'interno di un sorgente scritto in C, del codice assemby e, se si, come fare. Grazie.
01/01/10 17:02
c_programmer
crto che si può , puoi utilizzare l'inline assembly :


int main() {

 __asm__ ("movl %eax, %ebx"
          "movl , %esi"
          "movl %ecx, $label(%edx,%ebx,)"
          "movb %ah, (%ebx)");
return 0;

}



oppure semplicemente
...
..
asm movl %eax, %ebx
asm movl , %esi
...
..

aaa
01/01/10 19:09
Grazie per la risposta.:k:
03/01/10 12:53
Piccolo problema. Premetto che utilizzo GCC su Linux. Se compilo il codice, ad esempio:
main()
{
asm mov ah,2;
}


restituisce questi errori:
a.c: In function ‘main’:
a.c:5: error: expected ‘(’ before ‘mov’
a.c:5: error: ‘mov’ undeclared (first use in this function)
a.c:5: error: (Each undeclared identifier is reported only once
a.c:5: error: for each function it appears in.)
a.c:5: error: expected ‘;’ before ‘ah’

Se invece inserisco le parentesi tonde in questo modo:
main()
{
asm (mov ah,2);
}


restituisce l'errore
a.c: In function ‘main’:
a.c:5: error: expected string literal before ‘mov’

da cosa può essere dovuto?:-?
03/01/10 20:44
Astaroth
In alcuni compilatori per usare l'inline assembly devi inserire la direttiva:

#pragma inline
Ultima modifica effettuata da Astaroth 03/01/10 20:50
aaa
03/01/10 21:29
Già inserita ma l'errore è sempre lo stesso... comunque ho risolto scrivendo __asm__{"..."};
l'alternativa che mi avevi proposto.
03/01/10 21:35
Astaroth
ottimo. comunque non sono io ad aver proposto l'alternativa, ma c_programmer ;)
aaa
03/01/10 22:13
Postato originariamente da Astaroth:

ottimo. comunque non sono io ad aver proposto l'alternativa, ma c_programmer ;)


Scusa non avevo fatto caso... avevo visto l'immagine predefinita in entrambi ed il modo di scrivere era simile e mi sono confuso...:blush: