cc65 è un pacchetto completo per lo sviluppo trasversale 6502 sistemi, tra cui un potente assembler macro, un compilatore C, linker, bibliotecario e molti altri strumenti. cc65 si basa su un compilatore C che è stato originariamente adattato ai computer 8bit Atari di John R. Dunning.
Il compilatore C originale è un discendente Piccolo C, ma ha più estensioni, e alcuni dei limiti del compilatore originale Piccola C sono andato. Il copyright originale permette la libera redistribuzione tra cui le fonti, anche se non si qualificherebbe come Open Source Software secondo la Open Source Definition.
Il compilatore originale Atari è disponibile da http://www.umich.edu/~archive/atari/8bit/Languages/Cc65/. Il pacchetto completo comprende il compilatore, un assemblatore, un bibliotecario, un linker, e una libreria C per la Atari. Ci sono alcuni pacchetti in rete che pretendono di essere adattato come crosscompiler per DOS o Unix, ma non è stato in grado di farli funzionare correttamente.
Perché volevo un compilatore C per le mie macchine CBM, ho preso il compilatore Atari e ha iniziato una riscrittura. Fino ad oggi, ho riscritto gran parte del compilatore, tutta la biblioteca, completamente sostituito l'assemblatore, il linker e il bibliotecario, e ha aggiunto un frontend per semplificare l'uso. Tutte le modifiche sono state fatte con la portabilità in mente, così porting a nuove architetture di 6502 dovrebbe essere abbastanza facile.
Il compilatore è quasi ISO C compatibile, così si dovrebbe essere in grado di tradurre molte fonti da altri sistemi.
Ci possono essere altre limitazioni a carico del sistema di destinazione. Un esempio è il file di I / O, che non è implementata su tutte le piattaforme. Questa non è una limitazione tecnica (come con la roba di cui sopra), ma significa solo che nessuno si curava abbastanza per scrivere il codice vero e proprio.
Il compilatore è soltanto uno degli strumenti disponibili in questo pacchetto. La suite assembler (assembler, linker, archiviatore) è un ambiente di sviluppo completo per sé, che può essere utilizzato per scrivere programmi per qualsiasi macchina 6502. Codice C e il codice assemblatore possono essere usati insieme e possono chiamare reciprocamente.
L'assemblatore è un solo passaggio macroassembler ed è in grado di codice di uscita per il 6502, il 65SC02 e 65SC816. Ha un sacco di caratteristiche nifty come includere i file, assemblaggio condizionale, macro, livelli nidificati lessicali (cioè, simboli locali), e altro ancora. L'assembler crea file oggetto contengono codice rilocabile. Questi file devono essere eseguiti attraverso un linker per creare il programma definitivo.
Il linker ha un formato di uscita flessibile ed è in grado di supportare il codice romabile (diverso carico e indirizzi di esecuzione per i dati), sistemi sopraelevata (segmenti possono condividere lo stesso indirizzo run), sistemi con più segmenti ROM, illimitate, più di un segmento BSS e un sacco di altre cose.
L'archiviazione è utilizzato per creare librerie contenenti oggetti file. Questo semplifica la gestione del codice. Il linker estrarre solo quei moduli da una libreria che sono effettivamente necessaria.
Ad uso simplifiy, c'è anche un frontend per gli strumenti contenuti nel pacchetto cc65. L'interfaccia si chiama CL65. Si sa come costruire i binari da un elenco di file C, file assembler, file oggetto e le librerie. Per i progetti più piccoli, è necessaria solo una invocazione del programma di utilità CL65 per costruire un binario da diversi file sorgenti e le librerie
Caratteristiche :.
- Il compilatore permette commenti a linea singola che iniziano con //. Questa funzione è disattivata in modalità ANSI rigorosa.
- Il compilatore permette parametri senza nome nelle liste di parametri. Il compilatore non emette avvisi relativi parametri inutilizzati che non hanno un nome. Questa funzione è disattivata in modalità ANSI rigorosa.
- Il compilatore ha alcune parole chiave aggiuntive che sono necessarie per funzioni speciali. In modalità ANSI rigorosa, le ulteriori parole chiave iniziano con due underscore.
- Il modificatore volatile, non ha alcun effetto.
- I tipi di dati float e double non sono disponibili.
- Il compilatore non supporta i campi di bit.
- funzioni C possono non tornare le strutture e le strutture non possono essere passati come parametri per valore. Assegnazione struct è possibile.
- Ci sono alcune limitazioni alle dimensioni delle variabili locali. Non tutte le operazioni sono disponibili se le dimensioni delle variabili locali supera i 256 byte.
- Una parte della libreria C è disponibile solo con fastcall convenzioni di chiamata (vedi sotto). Ciò significa, che non si possono mescolare puntatori a queste funzioni con puntatori a funzioni utente scritto.
Cosa c'è di nuovo in questa versione:
- Alcune questioni macro e problemi con il codice errato generati dal C compilatore sono stati corretti.
- Questo include la conversione di una funzione per annullare puntatore e la routine di divisione runtime.
- L'assemblatore ha avuto anche alcuni problemi macro e un problema con allineamenti superiori a 256 byte.
- Ci sono stati problemi con la modalità 80 colonne e Conio scorrimento nella libreria C128.
- La libreria Atari ha ora POSIX routine directory.
- Ci sono stati diversi cambiamenti di documentazione, correzioni e miglioramenti.
Cosa c'è di nuovo in versione 2.13.0:.
- è stato aggiunto il supporto per bit-field
- Questa versione migliora la conformità agli standard, e avvertenze supplementari sono emessi per il codice dubbia.
- Le librerie sono sintonizzati per più velocità o più piccolo formato.
- Il compilatore genera codice più veloce in molti casi, di solito senza molto di un aumento delle dimensioni del codice.
I commenti non trovato