Software > Coding

Syntaxanpassungen für GNU as?

<< < (2/2)

mfro:

--- Zitat von: simonsunnyboy am So 03.11.2013, 16:14:51 ---"Alles auf dem Stack" ist eine Antwort, auch die macht mir ein *würg*, und fast noch ein größeres als die fehlenden Opcodes :P

Ich fürchte, gcc/gas ist für Atari keine Option, wenn man halbwegs syntaxkompatiblen und unsauberen Code (Demos/Games) schreiben will. Für sauberen Kram wohl ne gute Wahl....

--- Ende Zitat ---

Da bin ich anderer Ansicht.

AHCC ist zwar ein ganz nettes Programm, aber die Codeoptimierung ist bislang noch nicht aus den Kinderschuhen herausgekommen (ähnliches gilt übrigens auch für Pure/Turbo-C).

Der Code von gcc steckt den von AHCC gaaanz locker in die Tasche. Die Parameterübergabe auf dem Stack ist nur bei sehr kurzen Unterprogrammen von Nachteil und die kann gcc problemlos - ohne daß man extra was dazu tun müsste - inlinen.

Abgesehen davon darf ein Compiler, der Threads unterstützt, gar keine Parameterübergabe in Registern machen. Das geht sonst schief.

Gcc ist sehr viel mächtiger als AHCC. Nur zwei Beispiele: mit der Möglichkeit des Inline-Assemblies beim gcc lassen sich alle möglichen Schweinereien anstellen, mit dem __attribute__((interrupt)) direkt Traphandler und Interrupt-Routinen in C schreiben.

Wenn man sich mal daran gewöhnt hat,  sind die anderen Compiler nur noch Spielzeug.

AltF4:

--- Zitat von: mfro am So 03.11.2013, 18:01:16 ---Abgesehen davon darf ein Compiler, der Threads unterstützt, gar keine Parameterübergabe in Registern machen. Das geht sonst schief.
--- Ende Zitat ---

Das ist so Unfug, da bei einem Kontext-Wechsel natürlich auch die Register gesichert werden und damit der aufgerufenen Funktion in jedem Fall unverändert zur Verfügung stehen. Das wird selbst bei Userland-Thread-Bibliotheken so gehandhabt, da alles andere viel zu fehleranfällig wäre.

Ansonsten gebe ich Dir aber in allen Punkten recht.

mfro:

--- Zitat von: AltF4 am Mo 04.11.2013, 07:14:17 ---
--- Zitat von: mfro am So 03.11.2013, 18:01:16 ---Abgesehen davon darf ein Compiler, der Threads unterstützt, gar keine Parameterübergabe in Registern machen. Das geht sonst schief.
--- Ende Zitat ---

Das ist so Unfug, da bei einem Kontext-Wechsel natürlich auch die Register gesichert werden und damit der aufgerufenen Funktion in jedem Fall unverändert zur Verfügung stehen. Das wird selbst bei Userland-Thread-Bibliotheken so gehandhabt, da alles andere viel zu fehleranfällig wäre.

--- Ende Zitat ---

Da hab ich wohl ein wenig unsauber formuliert. Natürlich müsen die Register gesichert werden. Aber wo werden die gesichert? Eben. ;)

simonsunnyboy:
Trotz aller Vorteile würde das für mich einen kompletten Rewrite und erneuten Test vorhandenen Codes bedeuten...den Aufwand will ich aktuell nicht investieren, ich komm so schon kaum dazu an meinen eigentlichen Projekten zu schaffen.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln