Hallo Fragewurm,
Wenn du nicht nur die neuen MACs mit Intel-CPU unterstützen
willst, brauchst du auf alle Fälle zwei unterschiedliche
Backends für den Compiler.
Das wird er immer machen müssen, egal welche
C-Programmiersprache er benutzt, weil das Socket-Geraffel sich
von Betriebssystem zu Betreibsystem unterscheidet.
Was hat das Backend mit dem Betriebssystem zu tun ?
Das Frontend eines Compilers analysiert die entsprechende Sprache (Lexikalisch, Syntax) und bildet daraus einen Zwischencode, oft als Baum.
Im Mittelteil erfolgen dann Optimierungen auf logischer Ebene.
Und das Backend erzeugt dann den Code für eine bestimmte CPU.
Bei manchen Systemen ist/war es üblich, dass der Compiler einen Assembler-Source erstellt. Dann muss dieser erst noch durch den Assembler.
Das Resultat des Compilers ist dann ein Objekt-Format. In diesem sind die Adressen noch nicht festgelegt und es kann auch unaufgelöste Referenzen auf andere Module haben.
Der Linker bastelt dann alle Objekt-Module zusammen (Dazu gehören auch jene in den Bibliotheken), löst die Referenzen auf, legt die Ladeadresse fest und erzeugt die Ausführbare Datei im Format, welches vom Betriebssystem verlangt wird.
Das „Socket-Geraffel“ betrifft den Source-Code und die zu verwendenden Bibliotheken und hat nichts mit dem Backend zu tun.
Die meisten Programmierer kennen aber hat nur das was eine Entwicklungs-Umgebung wie MS-C oder Visual-BASIC und andere Hersteller bieten. Hierbei werden die ganzen Abfolgen hinter der IDE versteckt, sind aber trotzdem grundsätzlich vorhanden.
MfG Peter(TOO)