Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Assembler inline
Forum - C/C++ - Assembler inline

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Segnala al moderatore
Postato alle 0:41
Venerdì, 12/08/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)?

PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 12:46
Venerdì, 12/08/2011
se compili con gcc devi usare l'assembly at&t, visual, invece supporta quello intel...

PM Quote
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Segnala al moderatore
Postato alle 14:22
Venerdì, 12/08/2011
Testo quotato

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?

PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 17:00
Venerdì, 12/08/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...

PM Quote
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Segnala al moderatore
Postato alle 18:10
Venerdì, 12/08/2011
Testo quotato

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?

PM Quote
Avatar
anthony015 (Member)
Pro


Messaggi: 116
Iscritto: 20/05/2011

Segnala al moderatore
Postato alle 19:59
Venerdì, 12/08/2011
probabilmente si, se ti è venuto in mente di usarlo evidentemente è perché è una cosa vantaggiosa

PM Quote
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Segnala al moderatore
Postato alle 20:14
Venerdì, 12/08/2011
Testo quotato

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

PM Quote
Avatar
arack95 (Member)
Pro


Messaggi: 144
Iscritto: 15/11/2010

Segnala al moderatore
Postato alle 21:28
Venerdì, 12/08/2011
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 il 12/08/2011 alle 21:31


Take life less seriously!
PM Quote
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Segnala al moderatore
Postato alle 21:38
Venerdì, 12/08/2011
Testo quotato

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 :k:



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...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo