comina8 (Normal User)
Pro
Messaggi: 86
Iscritto: 18/06/2011
|
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)?
|
|
anthony015 (Member)
Pro
Messaggi: 116
Iscritto: 20/05/2011
|
se compili con gcc devi usare l'assembly at&t, visual, invece supporta quello intel...
|
|
comina8 (Normal User)
Pro
Messaggi: 86
Iscritto: 18/06/2011
|
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? |
|
anthony015 (Member)
Pro
Messaggi: 116
Iscritto: 20/05/2011
|
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...
|
|
comina8 (Normal User)
Pro
Messaggi: 86
Iscritto: 18/06/2011
|
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? |
|
anthony015 (Member)
Pro
Messaggi: 116
Iscritto: 20/05/2011
|
probabilmente si, se ti è venuto in mente di usarlo evidentemente è perché è una cosa vantaggiosa
|
|
comina8 (Normal User)
Pro
Messaggi: 86
Iscritto: 18/06/2011
|
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 |
|
arack95 (Member)
Pro
Messaggi: 144
Iscritto: 15/11/2010
|
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
Ultima modifica effettuata da arack95 il 12/08/2011 alle 21:31 |
|
comina8 (Normal User)
Pro
Messaggi: 86
Iscritto: 18/06/2011
|
Postato originariamente da 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 |
1) Non è un problema
2) I compilatori che mi interessano sono gcc e mingw
3) Beh se devo solo fare mov e add non penso... |
|