GAS-Inlineassembler in C



  • Hallo

    Ich bin neu im Assembler Bereich und komme um die Verwendung von Inlineassembler nicht herum. Ich verwende den AT&T Syntax, sprich GAS.

    Ich würde gernen die Variable i ins Register eax speichern, die Variable eax auslesen und ins die Variable y speichern.

    Wäre um eure Hilfe froh
    Gruss Leon





  • Hi

    Achso, ja jetzt ist die Verwendung des %0 und "" klar, dank dir.

    Gruss Leon



  • Ist Dir auch klar, dass Dein Code mit Inline-Assembler Funktionen für immer und ewig für den gcc Compiler "festgenagelt" ist 😕
    Kein Mensch auf dieser Welt wird je freiwillig Deinen Code anfassen wollen geschweige denn warten, Bugs suchen, erweitern wollen usw.



  • Naja, so schlimm ists nun auch nicht. Zumindest Clang und der Intel-Compiler unterstützen Inline-Assembler mit der gleichen Syntax wie GCC. Trotzdem würde ich von Inline-Assembler abraten.

    Eine imho bessere Lösung würde daraus bestehen, den Code, für den Assembler benötigt wird, in getrennte Dateien auszulagern. So behältst du halbwegs den Überblick darüber welche Teile der Codebasis CPU-spezifisch sind.

    Das Buildsystem könnte dann je nach Target die entsprechende Datei einbinden, also z.b.
    meincode_x86-64.s
    meincode_i386.s
    meincode_arm.s

    Möchtest du deinen Code dann auf eine neue Plattform bringen, siehst du recht schnell, was du dafür noch tun musst. Allemal besser als Inline-Assembler quer durch zig C-Files verteilt zu haben.



  • nach fast einem Jahr wird der OP bestimm noch mitlesen.



  • zombie_ schrieb:

    nach fast einem Jahr wird der OP bestimm noch mitlesen.

    Ups. Danke für den Hinweis. Aus irgendeinem Grund habe ich mir versehentlich einen Bookmark auf die 5. Seite dieses Unterforums gesetzt.


Anmelden zum Antworten