cc65 is een compleet pakket voor 6502 systemen, waaronder een krachtige macro assembler, een C-compiler, linker, bibliothecaris en diverse andere gereedschappen ontwikkeling kruis. cc65 is gebaseerd op een C-compiler die oorspronkelijk werd aangepast voor de Atari 8bit computers door John R. Dunning.
De oorspronkelijke C-compiler is een klein C nakomeling, maar heeft een aantal uitbreidingen, en sommige van de grenzen van de oorspronkelijke Small C-compiler zijn gegaan. Het oorspronkelijke auteursrecht kunt u gratis herverdeling inclusief bronnen, zelfs als het niet in aanmerking zouden komen als Open Source Software volgens de Open Source Definition.
De originele Atari compiler is beschikbaar vanaf http://www.umich.edu/~archive/atari/8bit/Languages/Cc65/. Het complete pakket bestaat uit de compiler, een assembler, een bibliothecaris, een linker en een C-bibliotheek voor de Atari. Er zijn een aantal pakketten op het net die beweren te worden aangepast als een crosscompiler voor DOS of Unix, maar was niet in staat om ze correct werkend te krijgen.
Want ik wilde een C-compiler voor mijn CBM machines, nam ik de Atari compiler en begon een herschrijven. Tot op heden heb ik herschreven grote delen van de compiler, alle van de bibliotheek, volledig vervangen van de assembler, de linker en de bibliothecaris, en voegde een frontend voor het gebruik te vereenvoudigen. Alle wijzigingen zijn gedaan met overdraagbaarheid in het achterhoofd, zodat het porten naar nieuwe 6502 architecturen moet heel eenvoudig zijn.
De compiler is bijna ISO C-compatibel, dus je moet in staat zijn om vele bronnen vertalen van andere systemen.
Er kunnen andere doelsysteem afhankelijke beperkingen. Een voorbeeld file I / O, die niet op alle platforms geïmplementeerd. Dit is geen technische beperkingen (zoals de hierboven genoemde dingen) maar alleen dat niemand gaf genoeg om de werkelijke code te schrijven.
De compiler is slechts één van de instrumenten die beschikbaar zijn in dit pakket. De assembler suite (assembler, linker, archiver) is een complete ontwikkelomgeving zelf, die kan worden gebruikt om programma's voor 6502 machine schrijven. C-code en assembler code kan samen gebruikt worden en kunnen elkaar bellen.
De assembler is een een pas macroassembler en is in staat om de productie-code voor de 6502, de 65SC02 en 65SC816. Het heeft veel handige functies, zoals onder andere bestanden, voorwaardelijke assemblage, macro's, geneste lexicale niveau (dat wil zeggen, lokale symbolen), en nog veel meer. De assembler creëert object bestanden met verplaatsbare code. Deze bestanden moeten worden uitgevoerd door middel van een linker naar het definitieve programma te creëren.
De linker heeft een flexibele output formaat en is in staat om ROMable code (verschillende belading en draaien adressen voor data) ondersteunen, dwarshelling systemen (segmenten kan hetzelfde run adres delen), systemen met meerdere roms, onbeperkt segmenten, meer dan een BSS segment en veel andere dingen.
De archiveerder wordt gebruikt om bibliotheken met objecten bestanden te maken. Dit vereenvoudigt code management. De linker zal uitpakken alleen die modules uit een bibliotheek die daadwerkelijk nodig zijn.
Om Vereenvoudig gebruik is er ook een frontend de gereedschappen in de cc65 pakket. De frontend is vernoemd CL65. Het weet hoe je binaries te bouwen uit een lijst van C-bestanden, assembler bestanden, object-bestanden en bibliotheken. Voor kleinere projecten, is slechts een beroep op de CL65 hulpprogramma nodig is om een binaire uit verschillende bronbestanden en bibliotheken te bouwen
Kenmerken .
- De compiler laat enkele lijn opmerkingen die beginnen met //. Deze functie is uitgeschakeld in strikte ANSI-modus.
- De compiler maakt niet nader genoemde parameters in parameter lijsten. De compiler zal niet waarschuwingen over niet-gebruikte parameters die geen naam hebben uitgeven. Deze functie is uitgeschakeld in strikte ANSI-modus.
- De compiler heeft een aantal extra trefwoorden die nodig zijn voor speciale functies. In strikte ANSI-modus, de extra trefwoorden beginnen met twee underscores.
- De vluchtige modifier heeft geen effect.
- De datatypes drijven en dubbele niet beschikbaar zijn.
- De compiler niet bitvelden ondersteunen.
- C functies niet structs terugkeren en structuren kunnen niet worden doorgegeven als parameters in waarde. Struct opdracht is mogelijk.
- Er zijn maximale grootte van lokale variabelen. Niet alle functies zijn beschikbaar als de omvang van de lokale variabelen groter is dan 256 bytes.
- Een deel van de C bibliotheek is alleen beschikbaar fastcall bellen conventies (zie hieronder). Dit betekent, dat u niet pointers om die functies kan mengen met verwijzingen naar de gebruiker geschreven functies.
Wat is nieuw in deze release:
- Een aantal macro-vraagstukken en problemen met foutieve code gegenereerd door de C compiler zijn vastgesteld.
- Dit omvat het omzetten van een functie om pointer en de runtime-divisie routine te vervallen.
- De assembler had ook een aantal macro-problemen en een probleem met de uitlijning van meer dan 256 bytes.
- Er waren problemen met de 80-kolom-modus en Conio scrollen in de C128 bibliotheek.
- De Atari bibliotheek heeft nu POSIX directory routines.
- Er zijn diverse documentatie veranderingen, fixes en verbeteringen geweest.
Wat is nieuw in versie 2.13.0:.
- Ondersteuning voor bit-velden is toegevoegd
- Deze release verbetert de normen voldoen, en de extra waarschuwingen worden uitgestoten voor dubieuze code.
- De bibliotheken zijn tuned voor meer snelheid of kleiner formaat.
- De compiler genereert sneller code in veel gevallen, meestal zonder al te veel van een toename van de grootte van de code.
Reacties niet gevonden