Forum: Compiler & IDEs SDCC 4.4.0 Release Candiate 1


von Philipp Klaus K. (pkk)


Lesenswert?

Heute erschien der Release Candidate 1 für SDCC 4.4.0. Quellcode,
Dokumentation, und Binärdateien für Windows, macOS und GNU/Linux, 
jeweils auf amd64 finden sich am üblichen Ort, in den entsprechenden
Verzeichnissen:

https://sourceforge.net/projects/sdcc/files/

Die bedeutendsten Neuerungen seit 4.3.0 sind:

* Optimizations for rotations.
* struct / union parameters for hc08, s08 and mos6502.
* Many bug fixes for -ms08 --stack-auto.
* struct / union return support for hc08 and s08 (caller side only).
* Generalized constant propagation.
* New command line option --syntax-only to only parse the input.
* Added C99 header inttypes.h
* Added library functions imaxabs, imaxdiv, llabs, strtoimax, strtoll, 
strtoull, strtoumax, wcsncmp, wcstoimax, wcstol, wcstoll, wcstoul, 
wcstoull, wcstoumax
* New r800 port to better support the ASCII Corp R800 and Zilog Z280.
* Changed the default calling convention for r2k, r2ka, r3ka, tlcs90, 
ez80-z80 from version 0 to 1 (this is an ABI break, and will require 
changes to user-written asm functions or their declarations).
* Improved optimizations for code speed for stm8, pdk, z80 (and 
related).
* New mos65c02 port to better support the WDC 65C02.

Das umfassende ChangeLog findet sich unter:
https://sourceforge.net/p/sdcc/code/HEAD/tree/tags/sdcc-4.4.0-rc1/sdcc/ChangeLog

Philipp
(SDCC 4.4.0 Release Manager)

P.S.: Mein persönlicher Eindruck ist, dass viele der neuen Features aus 
4.3.0 in manchen Corner Cases noch etwas problematisch waren, sich dies 
aber seither deutlich gebessert hat. Ich würde also allen, die die neuen 
C23-Features aus SDCC 4.3.0 verwenden, raten, bald auf 4.4.0 
umzusteigen.

: Bearbeitet durch User
von Wf88 (wf88)


Lesenswert?

Zufälligerweise entdecke ich so, dass der SDCC seit ca. 2 Jahren den 
6502 unterstützt.

Seit Jahren liegt ein 6502 Projekt auf Eis, ein weiterer BASIC 
Computer... Das angedachte BASIC stammt von mir und ist nur noch 
teilweise vorhanden. Ich war irgendwann gefrustet vom cc65 und seit dem 
liegt es.

Ich werde mir den 6502 Port des SDCC jetzt direkt mal ansehen. Da kommt 
die Bastel-Lust wieder hoch :)

Danke für den Tip, der eigentlich als ganz anderer gedacht war :)

von Philipp Klaus K. (pkk)


Lesenswert?

> Ich werde mir den 6502 Port des SDCC jetzt direkt mal ansehen. Da kommt
> die Bastel-Lust wieder hoch :)

Auch in diesem Fall würde ich dazu raten, SDCC 4.4.0 statt 4.3.0 zu 
verwenden: Insbesondere für reentrante Funktionen hat der mos6502-Port 
in SDCC 4.3.0 oft schlechten Code generiert. Da gab es in letzter Zeit 
noch einige Bugfixes.

P.S.: Es gibt zur Zeit auch eine Umfrage dazu, welche Ports / 
Zielarchitekturen SDCC-Nutzer verwenden (wer den mcs51-Port benutzt, 
kann gern in den Kommentaren bei der Umfrage angeben, welche Variante es 
ist, insbesondere, falls es sich um eine mit mehreren dptr handelt): 
https://terminplaner4.dfn.de/EQgiMIYKQafCQLtr

von Harald K. (kirnbichler)


Lesenswert?

Gäbe es einen 6809-Port, ich würde ihn mir glatt ansehen ...

von Wf88 (wf88)


Lesenswert?

Philipp Klaus K. schrieb:
> P.S.: Es gibt zur Zeit auch eine Umfrage dazu, welche Ports /
> Zielarchitekturen SDCC-Nutzer verwenden (wer den mcs51-Port benutzt,
> kann gern in den Kommentaren bei der Umfrage angeben, welche Variante es
> ist, insbesondere, falls es sich um eine mit mehreren dptr handelt):

Dafür habe ich SDCC verwendet und kennen gelernt, als ich mit 
Mikrocontrollern überhaupt begonnen habe. AT89C51AC3 und Keil Demo 
Version war sch*****. Für den AC3 musste ich nur einen anderen 
8051-Header anpassen.

War wohl so um 2003-2005, also bald 20 Jahre.

von Rick (rick)


Lesenswert?

Philipp Klaus K. schrieb:
> * Changed the default calling convention for r2k, r2ka, r3ka, tlcs90,
> ez80-z80 from version 0 to 1 (this is an ABI break, and will require
> changes to user-written asm functions or their declarations).
Da bin ich beim Z80 schon auf die Nase gefallen und mußte downgraden um 
nicht auch noch alle vorhandenen Libs anpassen zu müssen.
Ich habe nichts gegen die neue calling convention, da wieder etwas 
overhead wegfällt, aber das 'einfach' so umzustellen sorgt bei mir für 
einen großen Haufen zusätzlicher Arbeit.
In der Doku habe ich auch keine schöne Gegenüberstellung alt-vs-neu 
gefunden, oder welchen Schalter ich wo setzen muß, damit mein alter Code 
erstmal weiterlaufen kann.
Trotzdem schön, das es eine Weiterentwicklung gibt, weil früher war auch 
nicht alles besser :-)

von Markus F. (mfro)


Lesenswert?

Rick schrieb:
> oder welchen Schalter ich wo setzen muß, damit mein alter Code
> erstmal weiterlaufen kann.

die Compiler-Option dafür ist
1
--sdcccall 0
 oder
1
--sdcccall 1
.

Ähnliches gibt's auch bei der Funktionsdeklaration, so dass alter und 
neuer Code gemeinsam in derselben Datei weiter existieren kann.

von Philipp Klaus K. (pkk)


Lesenswert?

> Ich werde mir den 6502 Port des SDCC jetzt direkt mal ansehen. Da kommt
> die Bastel-Lust wieder hoch :)

Der heute veröffentlichte RC2 behebt noch 3 Fehler aus dem RC1, von 
denen hauptsächlich der mos6502-Port betroffen war.

von Philipp Klaus K. (pkk)


Lesenswert?

Nach einigen Verzögerungen gibt es nun SDCC 4.4.0:
https://sourceforge.net/projects/sdcc/files/

Auch der Vergleich der aktuellen Compiler für STM8 wurde aktualisiert:
http://www.colecovision.eu/stm8/compilers.shtml

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.