GNU Compiler Collection: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
In quale italiano si dice: "Processori meno noti che sono stati supportati includono A29K, Advanced Risc Computing..."?
Nessun oggetto della modifica
Riga 58:
 
In alcune release standard, sono stati supportati anche processori meno noti, tra cui [[A29K]], [[Advanced Risc Computing|ARC]], [[Atmel AVR]], [[C4x]], [[CRIS]], [[D30V]], [[DSP16xx]], [[FR-30]], [[FR-V]], [[Intel i960]], [[IP2000]], [[M32R]], [[Freescale 68HC11|68HC11]], [[MCORE]], [[MMIX]], [[MN10200]], [[MN10300]], [[microprocessore 320xx|NS32K]], [[ROMP]], [[Stormy16]], [[V850]] ed [[Xtensa]].
Altri processori, come [[D10V]], [[PDP-10]], [[MicroBlaze]] e [[Z8000]], sono stati supportati da versioni di GCC mantenutesviluppate separatamente dallarispetto versione della FSFFree Software Foundation.
 
== SDCC (Small Device C Compiler) ==
 
L'[http://sdcc.sourceforge.net/ SDCC] ([[Small Devices C Compiler]]) è un [[porting]] [[open source]] per i microcontrollori delle sole famiglie [[Z80]], [[8051]], [[68HC11]], [[PIC (microcontrollore)|Pic]] è stato separato dal progetto GCC per poter ottimizzare meglio il lavoro dei [[microcontrollori]], dove serve una grande efficienza del compilatore e contemporaneamente vivere in un ambiente molto povero di risorse [[RAM]] e [[Read-Only Memory|ROM]], con interfacce personalizzate e dotato di registri speciali incompatibili con l'elaborazione.
 
Nonostante il piccolo numero di target disponibili, il compilatore è molto quotato e nella maggior parte delle situazioni dà risultati migliori dei sistemi di sviluppo professionali a pagamento.
Riga 68:
== Utilizzo e funzionamento ==
 
GCC, in quanto compilatore, ha come scopo primario la traduzione di [[codice sorgente]] in [[Linguaggio macchina|codice macchina]] che possa essere eseguitoeseguibile.
 
Ad esempio, per compilare un file di codice sorgente scritto in C, si può eseguire gcc fornendogli in input il file desiderato. Esiste un grandissimo numero di parametri che è possibile passare al compilatore per gestire i vari aspetti e i vari dettagli del processo di generazione del codice; l'unico obbligatorio è il nome del file da compilare.
Riga 76:
gcc main.c
</syntaxhighlight>
che ordina al compilatore di leggere il file <tt>main.c</tt> (<tt>.c</tt> è l'[[Estensione (file)|estensione]] caratteristicastandard dei file contenenti [[C (linguaggio)|codice C]]) e compilarlo. Il file eseguibile viene chiamato <tt>[[a.out]]</tt> perchéPoiché non è stato specificato alcun nome, tramite il parametro <tt>-o</tt>, per il file di output con, il parametrofile eseguibile viene chiamato <tt>-o[[a.out]]</tt>.
 
La compilazione avviene in tre fasi:
# il file da compilare viene trattato dal [[preprocessore]], che analizza le direttive scritte per il compilatore (definite in alcune righe del codice, solitamente posizionate in testa al file e precedute dal carattere <tt>#<tt>). Se eseguito con il parametro <tt>-E</tt>, gcc esegue solo questo passo, fornendo in output il risultato delle attività del preprocessore;
# nella seconda fase, il file dà origine ada un nuovo [[Codice oggetto|file oggetto]] che, non è ancora eseguibile;
# a questo punto entra in funzione il [[Linking|linker]] che produce un unico [[file eseguibile]], contenente il tutto, unendo tra loro tutti i file oggetto tra loro e aii file delle [[Libreria software|librerie]], produce un unico [[file eseguibile]] contenente il tutto. Per non duplicare il codice delle librerie nell'eseguibile si può usare il [[Dynamic-link library|collegamento dinamico]].
 
== Note ==