Oppure

Loading
11/08/11 22:41
comina8
Salve a tutti sto aprendo questa discussione perché, come da titolo, mi interesserebbe iniziare ad usare qualche riga di assembler nei miei codici C.
Da un po' sto implementando una libreria matematica per gestire grandi numeri allocando dinamicamente celle di memoria per contenere le cifre.
Come prestazioni non mi lamento e sono abbastanza soddisfatto, vorrei però (anche solo come curiosità;) cercare di ottimizzare le operazioni iniziando ad eseguirne qualcuna in assembler.
Cercando su goggle ho letto della funzione __asm__(const char*)
ma vorrei delle delucidazioni a riguardo.
A scuola abbiamo imparato l'Assembler con compilatore MASM...
Con la succitata funzione posso scrivere codice con sintatassi AT&T, Intel o quale?

PS: la libreria per adesso è portabile, scrivendo righe in assembler devo distinguere in compilazione su quale SO mi trovo (mi interesserebbe Windows e Linux)?
aaa
12/08/11 10:46
anthony015
se compili con gcc devi usare l'assembly at&t, visual, invece supporta quello intel...
aaa
12/08/11 12:22
comina8
Postato originariamente da anthony015:

se compili con gcc devi usare l'assembly at&t, visual, invece supporta quello intel...


Quindi compilando con mingw devo usare at&t...
Per quanto riguarda le istruzioni non dovrebbero cambiare da SO a SO, cosa diversa per gli interrupt giusto?
aaa
12/08/11 15:00
anthony015
non sono sicuro riguardo la chiamata di interruzioni, conoscendo ben poco l'assembly at&t non ho mai provato a chiamarle con mingw, ma con visual non credo sia possibile...
aaa
12/08/11 16:10
comina8
Postato originariamente da anthony015:

non sono sicuro riguardo la chiamata di interruzioni, conoscendo ben poco l'assembly at&t non ho mai provato a chiamarle con mingw, ma con visual non credo sia possibile...


Ok comunque difficilmente richiamerò interruzioni...
Per adesso sono riuscito a creare un programma che esegue somma e sottrazione su variabili in C con codice Assembly quindi non mi resta che studiare un po' la sintassi.
Comunque in via ipotetica potrebbe convenire realizzare alcune parti in Assembly rispetto a lasciare tutto il codice in C?
aaa
12/08/11 17:59
anthony015
probabilmente si, se ti è venuto in mente di usarlo evidentemente è perché è una cosa vantaggiosa
aaa
12/08/11 18:14
comina8
Postato originariamente da anthony015:

probabilmente si, se ti è venuto in mente di usarlo evidentemente è perché è una cosa vantaggiosa


Magari tutto quello che mi viene in mente fosse una cosa vantaggiosa XD
aaa
12/08/11 19:28
arack95
No non ti conviene, in genere si usa per fare ottimizzazioni ma non farlo se non è proprio necessario, ecco tre motivazioni:
1) Rendi il codice osceno;
2) Avrai problemi per i vari compilatori se supportano l'at&t o l'intel, per esempio gcc usa gas come assembler, che usa la sintassi at&t, mentre quello di vs usa l'intel;
3) Rendendi il codice dipendente dalla piattaforma;

Finché non sei obbligato evita :k:
Ultima modifica effettuata da arack95 12/08/11 19:31
aaa