Questo è il comando sdcc che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
sdcc - Compilatore C per piccoli dispositivi
SINOSSI
SDCC [opzioni] Nome del file
AVVERTIMENTO
Le informazioni in questa pagina man sono un estratto dalla documentazione completa di SDCC e sono
limitato al significato delle opzioni.
Per la documentazione completa e aggiornata, fare riferimento al SDCC Compiler Utente alle taglie.
DESCRIZIONE
SDCC è un compilatore ANSI-C open source gratuito, retargettabile e ottimizzante progettato per 8 bit
Microprocessori. La versione attuale è destinata ai microprocessori basati su Intel MCS51 (8031,
8032, 8051, 8052, ecc.), varianti Dallas DS80C390, Freescale (ex Motorola) HC08 e
MCU basati su Zilog Z80 (z80, z180, gbz80, Rabbit 2000/3000). Può essere riorientato per altri
microprocessori, il supporto per Microchip PIC è in fase di sviluppo.
SDCC utilizza una versione modificata di ASXXXX e ASLINK, assembler retargetable open source gratuito e
linker.
SDCC ha estese estensioni del linguaggio adatte per l'utilizzo di vari microcontrollori e
hardware sottostante in modo efficace.
SDCC usa ASXXXX & ASLINK, un assemblatore e linker ritargettabile freeware. SDCC ha
estese estensioni del linguaggio adatte per l'utilizzo di vari microcontrollori e
hardware sottostante in modo efficace.
Il compilatore consente inoltre di incorporare il codice assembler in linea ovunque in una funzione. In
inoltre, possono essere chiamate anche routine sviluppate in assembly.
PROCESSORE SELEZIONE VERSIONI
-mmcs51
Genera codice per la famiglia di processori MCS51 (8051). Questa è l'impostazione predefinita
destinazione del processore.
-mds390
Genera codice per il processore DS80C390.
-mds400
Genera codice per il processore DS80C400.
-mz80 Genera codice per la famiglia di processori Z80.
-mc08 Genera codice per il processore GameBoy Z80.
-mz80 Genera codice per la famiglia di processori Zilog Z80.
-mz180 Genera codice per la famiglia di processori Zilog Z180.
-mr2k Genera codice per la famiglia di processori Rabbit 2000 / Rabbit 3000."
-mr3ka Genera codice per la famiglia di processori Rabbit 2000 / Rabbit 3000. Controlla XXXXX"
-mgbz80
Genera codice per il processore GameBoy Z80 (non mantenuto attivamente).
-mpic14
Genera codice per i processori Microchip PIC a 14 bit (p16f84 e varianti. In
sviluppo, non completo).
-mpic16
Genera codice per i processori Microchip PIC a 16 bit (p18f452 e varianti. In
sviluppo, non completo).
-mtlcs900h
Genera codice per il processore Toshiba TLCS-900H (non mantenuto, non completo).
-mxa51 Genera codice per il processore Phillips XA51 (non mantenuto, non completo).
-mstm8 Genera codice per il processore STM8.
PREPROCESSORE VERSIONI
-I
La posizione aggiuntiva in cui il preprocessore cercherà "<..h>" o "..h"
File.
-D
Definizione della riga di comando delle macro. Passato al preprocessore.
-M Dire al preprocessore di produrre una regola adatta a descrivere il
dipendenze di ogni file oggetto. Per ogni file sorgente, il preprocessore emette
una regola di creazione il cui obiettivo è il nome del file oggetto per quel file sorgente e la cui
le dipendenze sono tutti i file `#include'd in esso. Questa regola può essere una singola riga o
può essere continuato con `\'-newline se è lungo. L'elenco delle regole è stampato su
output standard invece del programma C preelaborato. `-M' implica `-E'.
-C Dire al preprocessore di non scartare i commenti. Usato con il `-E' opzione.
-MM Come `-M' ma l'output menziona solo i file di intestazione dell'utente inclusi con
`#include "file"'. File di intestazione di sistema inclusi con `#include ' sono omessi.
-A domanda risposta)
Affermare la risposta risposta per domanda, nel caso in cui sia testata con un preprocessore
condizionale come `#if #domanda(risposta)'. `-A-' disabilita lo standard
asserzioni che normalmente descrivono la macchina di destinazione.
-A domanda
(risposta) Asserisci la risposta risposta per domanda, nel caso sia testata con a
condizionale del preprocessore come `#if #question(answer)'. `-A-' disabilita il
asserzioni standard che normalmente descrivono la macchina di destinazione.
-Umacro
Macro macro indefinita. `-U' le opzioni vengono valutate dopo tutto `-D' opzioni, ma
prima di qualsiasi `-includere' e `-imacro' opzioni.
-dM Dire al preprocessore di produrre solo un elenco delle definizioni di macro che sono in
effetto al termine della pre-elaborazione. Usato con il '-E' opzione.
-dd Dire al preprocessore di passare tutte le definizioni macro nell'output, nella loro
sequenza corretta nel resto dell'output.
-dN Come `-dD'tranne per il fatto che gli argomenti e i contenuti della macro vengono omessi. Solo `#definire
nome' è incluso nell'output.
LINKER VERSIONI
-L, -lib-percorso<assoluto sentiero a aggiuntivo biblioteche>
Questa opzione viene passata al percorso di ricerca delle librerie aggiuntive dell'editor di collegamento. Il
il nome del percorso deve essere assoluto. File di libreria aggiuntivi possono essere specificati in
riga di comando. Vedere la sezione Compilazione di programmi per maggiori dettagli.
--xram-loc
La posizione iniziale del pistone esterno, il valore predefinito è 0. Il valore inserito può
essere in formato esadecimale o decimale, ad esempio: --xram-loc 0x8000 or --xram-loc 32768.
--codice-loc
La posizione iniziale del segmento di codice, valore predefinito 0. Nota quando questa opzione è
utilizzata anche la tabella del vettore di interrupt viene riposizionata all'indirizzo specificato. Il valore
immesso può essere in formato Esadecimale o Decimale, ad esempio: --codice-loc 0x8000 or --codice-
loc 32768.
--stack-lock
Il valore iniziale del puntatore dello stack. Il valore predefinito del puntatore dello stack è
0x07 se viene utilizzato solo il banco di registri 0, se vengono utilizzati altri banchi di registri allora il
il puntatore dello stack viene inizializzato nella posizione sopra il banco di registri più alto utilizzato.
per esempio. se vengono utilizzati i banchi di registro 1 e 2, il puntatore dello stack verrà impostato automaticamente sulla posizione
0x18. Il valore inserito può essere in formato Esadecimale o Decimale, ad es. --stack-lock
0x20 or --stack-lock 32. Se vengono utilizzati tutti e quattro i banchi di registri, lo stack sarà
posto dopo il segmento di dati (equivalente a --stack-dopo-dati)
--stack-dopo-dati
Questa opzione farà sì che lo stack venga posizionato nella ram interna dopo i dati
segmento.
--data-loc
La posizione iniziale del segmento di dati della ram interna, il valore predefinito è 0x30.
il valore inserito può essere in formato Esadecimale o Decimale, ad es. --data-loc 0x20 or
--data-loc 32.
--data-loc
La posizione iniziale della ram interna indirizzabile indirettamente, il valore predefinito è
0x80. Il valore inserito può essere in formato Esadecimale o Decimale, ad es. --data-loc
0x88 or --data-loc 136.
--out-fmt-ihx
L'output del linker (codice oggetto finale) è in formato Intel Hex. (Questa è l'impostazione predefinita
opzione).
--out-fmt-s19
L'output del linker (codice oggetto finale) è in formato Motorola S19.
MCS51 VERSIONI
--modello-grande
Genera codice per programmi modello Large, vedere la sezione Modelli di memoria per maggiori dettagli.
Se questa opzione viene utilizzata, tutti i file sorgente nel progetto dovrebbero essere compilati con questo
opzione. Inoltre le routine della libreria standard sono compilate con un piccolo modello,
dovranno essere ricompilati.
--model-piccolo
Genera codice per programmi Small Model, vedere la sezione Memory Models per maggiori dettagli.
Questo è il modello predefinito.
DS390 / DS400 VERSIONI
--modello-flat24
Genera codice in modalità flat a 24 bit. Questo è l'unico e solo il codice ds390
generatore supporta in questo momento ed è predefinito quando si utilizza -mds390.
--protect-sp-aggiornamento
Disabilita gli interrupt durante gli aggiornamenti di ESP:SP.
_--stack-10 bit
Genera codice per la modalità stack a 10 bit della parte Dallas DS80C390. Questo è il
uno e solo che il generatore di codice ds390 supporta in questo momento ed è predefinito quando
utilizzando -mds390. In questa modalità, lo stack si trova nel 1K inferiore dell'internal
RAM, che è mappata su 0x400000 . Si noti che il supporto è incompleto, poiché
utilizza ancora un singolo byte come puntatore dello stack. Ciò significa che solo i 256 . inferiori
verranno effettivamente utilizzati i byte del potenziale spazio dello stack da 1K. Tuttavia, questo non
consentono di recuperare i preziosi 256 byte di RAM bassa per l'uso per i DATI e
Segmenti IDATA. Il compilatore non genererà alcun codice in cui inserire il processore
Modalità stack a 10 bit. È importante assicurarsi che il processore sia in questa modalità
prima di chiamare qualsiasi funzione rientrante compilata con questa opzione. In linea di principio,
questo dovrebbe funzionare con --stack-auto opzione, ma non è stato testato. è
incompatibile con il --xstack opzione. Ha anche senso solo se il processore è
in modalità di indirizzamento contiguo a 24 bit (vedi --modello-flat24 opzione).
Z80 Opzioni
--callee-save-bc
Forza una funzione chiamata a salvare sempre BC.
--no-std-crt0
Durante il collegamento, salta il file oggetto standard crt0.o. Devi fornire il tuo
crt0.o per il tuo sistema durante il collegamento.
OTTIMIZZAZIONI VERSIONI
--nogcse
Non eseguirà l'eliminazione globale della sottoespressione, questa opzione può essere utilizzata quando il
il compilatore crea spazi di dati/stack indesiderabilmente grandi per memorizzare i dati temporanei del compilatore.
Verrà generato un messaggio di avviso quando ciò accade e il compilatore lo farà
indicare il numero di byte extra allocati. Si raccomanda che questa opzione
NON essere utilizzato, #pragma NOGCSE può essere utilizzato per disattivare la sottoespressione globale
eliminazione solo per una data funzione.
--noinvariante
Non eseguirà ottimizzazioni invarianti del ciclo, questo potrebbe essere disattivato per motivi
spiegato per l'opzione precedente. Per maggiori dettagli sulle ottimizzazioni del ciclo eseguite
vedere la sezione Loop Invariants. Si raccomanda di NON utilizzare questa opzione, #pragma
NOINVARIANTE può essere usato per disattivare le ottimizzazioni invarianti per una data funzione
solo.
--noinduzione
Non eseguirà ottimizzazioni dell'induzione del ciclo, vedere la sezione Riduzione della forza per ulteriori informazioni
particolari. Si consiglia di NON utilizzare questa opzione, #pragma NOINDUZIONE può essere
utilizzato per disattivare le ottimizzazioni di induzione solo per una determinata funzione.
--nojtbound
Non genererà il controllo delle condizioni al contorno quando vengono implementate le istruzioni switch
utilizzando le tabelle di salto. Si consiglia di NON utilizzare questa opzione, #pragma
NOJTBOUND può essere utilizzato per disattivare il controllo dei confini per le tabelle di salto per un dato
solo funzione.
--noloopverse
Non eseguirà l'ottimizzazione dell'inversione del ciclo.
ALTRO VERSIONI
-C, --solo-compila
compilerà e assemblerà il sorgente, ma non chiamerà l'editor di collegamento.
-E Esegui solo il preprocessore C. Preelabora tutti i file sorgente C specificati e restituiti
i risultati allo standard output.
--stack-auto
Tutte le funzioni nel file sorgente verranno compilate come rientranti, ovvero i parametri
e le variabili locali verranno allocate sullo stack. Se questa opzione viene utilizzata all
i file sorgente nel progetto dovrebbero essere compilati con questa opzione.
--xstack
Utilizza uno pseudo stack nei primi 256 byte nella ram esterna per l'allocazione
variabili e parametri di passaggio.
--callee-save funzione1[,funzione2][,funzione3]....
Il compilatore per impostazione predefinita utilizza una convenzione di salvataggio del chiamante per il salvataggio del registro attraverso
chiamate di funzione, tuttavia ciò può causare inutili push & popping di registro quando
chiamare piccole funzioni da funzioni più grandi. Questa opzione può essere utilizzata per cambiare
la convenzione di salvataggio del registro per i nomi di funzione specificati. Il compilatore
non salvare i registri quando si chiamano queste funzioni, non verrà generato alcun codice aggiuntivo a
l'entrata e l'uscita per queste funzioni per salvare e ripristinare i registri utilizzati da queste
funzioni, questo può SOSTANZIALMENTE ridurre il codice e migliorare le prestazioni di runtime del
codice generato. In futuro il compilatore (con analisi interprocedurale) sarà
in grado di determinare lo schema appropriato da utilizzare per ogni chiamata di funzione. DO NON uso
questa opzione per funzioni integrate come _mulino..., se questa opzione viene utilizzata per
una funzione di libreria la funzione di libreria appropriata deve essere ricompilata con il
stessa opzione. Se il progetto è costituito da più file sorgente, allora tutta la sorgente
il file dovrebbe essere compilato con lo stesso --callee-save stringa di opzioni.
- debug
Quando viene utilizzata questa opzione, il compilatore genererà informazioni di debug, che possono essere
utilizzato con il SDDCB. Le informazioni di debug sono raccolte in un file con estensione .cdb
estensione.
--reestensione
Questa opzione è obsoleta e non è più supportata.
--noregparms
Questa opzione è obsoleta e non è più supportata.
--peep-file
Questa opzione può essere utilizzata per utilizzare regole aggiuntive da utilizzare per lo spioncino
ottimizzatore.
-S Stop dopo la fase di compilazione vera e propria; non montare. L'uscita è an
file di codice assembler per il file di input specificato.
-Wa_asmOpzione[,asmOpzione]...]
Passa l'opzione asmOption all'assemblatore.
-Wl_linkOpzione[,linkOpzione]...]
Passa il linkOption al linker.
--int-affitto-lungo
Le librerie intere (16 bit) e lunghe (32 bit) sono state compilate come rientranti. Nota
per impostazione predefinita queste librerie sono compilate come non rientranti.
--ciclomatico
Questa opzione farà sì che il compilatore generi un messaggio informativo per ciascuno
funzione nel file sorgente. Il messaggio contiene alcune importanti informazioni su
la funzione. Il numero di archi e nodi che il compilatore ha rilevato nel controllo
diagramma di flusso della funzione e, soprattutto, la complessità ciclomatica.
--float-reent
La libreria in virgola mobile viene compilata come rientrante.
--nessuna sovrapposizione
Il compilatore non sovrapporrà parametri e variabili locali di alcuna funzione, vedi
sezione Parametri e variabili locali per maggiori dettagli.
--main-ritorno
Questa opzione può essere utilizzata quando il codice generato viene richiamato da un programma di monitoraggio.
Il compilatore genererà un 'ret' al ritorno dalla funzione 'main'. Il
l'opzione predefinita è quella di bloccare, cioè generare un 'ljmp'.
--no-peep
Disabilita l'ottimizzazione dello spioncino.
--peep-asm
Passa il codice dell'assemblatore in linea attraverso l'ottimizzatore di spioncino. Questo può causare
modifiche impreviste al codice assembler in linea, per favore passa attraverso lo spioncino
le regole dell'ottimizzatore definite nell'albero dei file di origine ' /peeph.def' prima di usare
questa opzione
--dimensione iram
Fa sì che il linker controlli se l'utilizzo della ram interna è entro i limiti del dato
valore.
--nostdincl
Ciò impedirà al compilatore di passare il percorso di inclusione predefinito al file
preprocessore.
--nostdlib
Ciò impedirà al compilatore di passare il percorso della libreria predefinita al file
linker.
--verboso
Mostra le varie azioni che il compilatore sta eseguendo.
-V Mostra i comandi effettivi che il compilatore sta eseguendo.
INTERMEDIO DUMP VERSIONI
Le seguenti opzioni sono fornite allo scopo di retargeting e debugging del
compilatore. Questi fornivano un mezzo per scaricare il codice intermedio (iCode) generato dal
compilatore in forma leggibile dall'uomo nelle varie fasi del processo di compilazione.
--dumpraw
Questa opzione farà sì che il compilatore scarichi il codice intermedio in un file di
di nome . dumpraw subito dopo che il codice intermedio è stato
generato per una funzione, ovvero prima che vengano eseguite le ottimizzazioni. I blocchi di base
in questa fase ordinati in profondità il primo numero, quindi potrebbero non essere in sequenza di
esecuzione.
--dumpgcse
Creerà un dump di iCode, dopo l'eliminazione della sottoespressione globale, in un file
di nome .dumpgcse.
--dumpdeadcode
Creerà un dump di iCode, dopo l'eliminazione del deadcode, in un file denominato
.dumpdeadcode.
--duploop
Creerà un dump di iCode, dopo le ottimizzazioni del ciclo, in un file denominato
nomefile>.dumploop.
--dumprange
Creerà un dump di iCode, dopo l'analisi dell'intervallo in tempo reale, in un file denominato
nomefile>.dumprange.
--dumlrange
Scaricherà gli intervalli di vita per tutti i simboli.
--dumpregassign
Creerà un dump di iCode, dopo l'assegnazione del registro, in un file denominato
nomefile>.dumprassgn.
--dumplrange
Creerà un dump degli intervalli live di iTemp's
--cassonetto
Provocherà la creazione di tutti i dump sopra menzionati.
COPIA
L'intero codice sorgente per il compilatore è distribuito sotto GNU General Public License.
Utilizzare sdcc online utilizzando i servizi onworks.net