Whoa, hier geht's wiedermal zur Sache.
Da geb ich gleich mal ein paar Infos zu den Compilern:
GCC ist der Standard-Compiler, welcher in der freien Softwarewelt seit Jahren benutzt wird.
Clang wurde vor einigen Jahren von Apple auf den Markt geworfen, wirkt etwas sauberer designt und es gibt viele Tools, Warnungen und Fehlermeldungen.
Beide Compiler erzeugen
unterschiedlichen Bytecode und Clang hat den Ruf schnellere Software zu erzeugen als der GCC.
Um Performance geht's hierbei allerdings nicht, sondern um möglichst flexiblen Quellcode.
Den von mir rekonstruierten Quellcode konnte ich mit beiden Compilern erfolgreich übersetzen.
Da ich allerdings "Was sehen" wollte habe ich vor 4 Tagen einen Speicherbereich von 320x200 Pixeln eingefügt,
welcher den Speicher einer VGA-Karte repräsentiert (siehe
Commit e1c1824 Zeile 7306 in g105_seg002.c).
Diesen habe ich wenige Studen später in der GCC/Clang-Welt nutzbar gemacht (siehe
Commit 52092e8).
Die Umsetzung ist einfach: Fenster, Renderer und Textur erzeugen, Farbpaletten anpassen und den Inhalt des Speicherbereichs in die Textur übertragen und rendern.
Bei jedem Aufruf in die Grafikroutinen wird am Ende der Inhalt des Fensters aktualisiert.
Ein unschöner Nebeneffekt dieser Änderung war, dass bisher die SDL2 Bibliothek mit Code vom GCC nicht gelinkt werden konnte. Das habe ich eben behoben.
(Im Makefile "CC=clang" durch "CC=gcc" ersetzen 'make' aufrufen und 'g105de_gcc' starten.)
Prinzipiell bin ich dafür beide Compiler in der Zukunft zu benutzen, da beide jeweils ihre Vorteile haben.
GCC unterstützt sehr viele Prozessorarchitekturen (x86, x86_64, ARM, MIPS, ...) und auch Windows (32- und 64-Bit).
Clang sicherlich auch, aber das findet sich.
Beide Compiler sind von der Benutzung sehr ähnlich und ja: Ich finde es erstmal cool mehrere Compiler benutzen zu können.
Was die Zukunft bringt wird sich zeigen.
Aktuell entwickle ich einen Test für Phase 2+3, welcher beide EXE-Dateien auf Ähnlichkeit prüft.
Grund ist, dass in den vom BCC erzeugten Objektdateien die Speicheradressen von absolut zu relativ gewechselt sind und somit mit meiner bisherigen Testroutine
sehr viele Unterschiede angezeigt werden.
Die GEN.EXE welche ich (noch lokal) bei mir erzeuge, hat weitestgehend denselben Binärcode (inkl. Speicheradressen) wie das Original (272/52336 also ca. 0,52 % vom Code sind aktuell unterschiedlich, Speicherbereiche habe dasselbe Layout, aber noch eine immense Größendifferenz).
Unterschiede im Code haben dieselbe Funktionalität oder werden von mir noch soweit untersucht, dass ich sie entsprechend anpasse, falls es möglich ist.
Prinzipiell sehe ich es so, dass der BCC die Vergangenheit abdeckt und auch ältere Versionen der GEN.EXE leicht aus dem von mir erstellten Code erzeugt werden können.
Die GCC/Clang-Welt deckt die zukünftige Entwicklung ab.
Dort wird es in der Zukunft noch eine Aufspaltung geben.