Moin Bernd,
die Assembler-Codesequenzen sind ein sehr interessanter Einblick in die Art wie die Compiler den C-Code umsetzen. Wenn ich die beiden Assembler-Ergebnisse einmal genauer betrachte, dann erscheint mir das Ergebnis, welches der sccz80 produziert, näher an den Vorgaben des C-Codes zu sein, ganz im Gegensatz zum zsdcc. Der sccz80 legt den Zeiger auf den Ausgabetext auf den Stack, gibt den Text aus und räumt anschließend durch pop bc den gesicherten Zeiger wieder ab. Dann gibt es ein LD hl,0 für das RETURN 0, ganz wie es im C-code steht. Der zsdcc lädt nach dem call _printf anscheinend ein Flag von _printf ins CPU Statusregister - eine Optimierung ?. Wie's dann weitergeht, ist wegen der Endlosschleife leider nicht zu sehen, aber diese Vorgehensweise wirkt auf mich wie ein unsauberes Vorgehen. So gesehen, würde ich mich eher für den sccz80 als Compiler entscheiden.
Aus rein verständnisstechnischer Sicht, würde ich trotzdem die 'while (true) {....} Schleife bevorzugen, Je früher ersichtlich wird, was beabsichtigt ist, umso besser. C hat ohnehin einen gewissen Hang zum 'Abküfi' ... ('Abküfi' => Abkürzungsfimmel)
Off-Topic: Ich versuche mich mit den Beispielen, wenn möglich, auf drei Systemen: PC, Multicomp und die Joyce. Aber jedesmal, wenn die Joyce dran ist, habe ich das Gefühl, mir sitzt Prinz Walium gegenüber. Geht es nur mir oder Euch auch so ? Wie hat man das 'Damals' nur ausgehalten. Da scheint sich doch eine Zeitenwende abgespielt zu haben...
