Inline-Assembler lieber in Assembler auslagern?



  • Hallo,

    ich habe das zwar schon irgendwo im großen Thread angesprochen, dass Inline-Assembler in PrettyOS allgemein Compiler-spezifisch ist und den Code nicht portabel macht... Wäre es vielleicht sinnvoll, die ganzen Funktionen im "richtigen" Assembler (nasm, weil nasm nun "default" Assembler ist) zu implementieren?
    Damit hätte man eine definierte Schicht in Assembler und ein Interface dazu. C wäre wieder C, Assembler wäre wieder Assembler 😉


  • Mod

    Ja, das sollte man konsequent trennen, soweit sinnvoll.

    Aber so etwas wie in util.c (ab Version 108: ourportl u. inportl) lässt man doch zusammen?

    inline UINT inportl(USHORT port)
    {
    	UINT ret_val;
    	__asm__ volatile ("inl %1,%0" : "=a" (ret_val) : "Nd" (port));
    	return ret_val;
    }
    

    oder etwa nicht?



  • Konsequent oder sinnvoll. Da musst du dich schon entscheiden.

    Sinnvoll ist (wie an anderer Stelle schon mal erläutert) Austauschbarkeit des Compilers nicht. Wenn ihr Assembler-Code in eine eigene Datei auslagert, damit der C-Code "compilerunabhängig" ist, dann ist halt der Assemblercode abhängig vom Assembler...



  • Lüttmoor schrieb:

    Wenn ihr Assembler-Code in eine eigene Datei auslagert, damit der C-Code "compilerunabhängig" ist, dann ist halt der Assemblercode abhängig vom Assembler...

    und von der CPU, für die man in Assembler programmiert, weil man damit die "Features" der CPU erreicht, die man nicht mit C erreichen würde.


Anmelden zum Antworten