assembler in C einbinde



  • hey leute,

    wenn ich einen fertigen Assembler code habe, zB

    .......

    label1:
    xxxxx
    xxxxx
    ....
    ret
    .....

    also einen langen code indem irgendwo ein unterprogramm "label1" vorkommt.
    wenn ich diese assembler datei in C includiere, kann ich dann irgendwie label1 also funktion auffassen und als "label1()" aufrufen?

    falls ja, was wäre wenn ich die argumente in den registern erwarte? müsste ich diese per "asm" in die register packen oder gibts auch anderen wege cpu registern in C werte zu zuweisen?

    gruß 🙂



  • Das mit dem "Inkludieren" wuerde ich lassen. Bringt mehr Probleme als Nutzen. Assembliere/Compiliere deine C/Assembler-Codes einzeln und linke sie hinterher zusammen. Dazu musst du natuerlich "extern"-Definitionen in den C-Codes anbringen, in denen du die Asm-Funktionen benutzen willst.
    Falls du spezielle Aufrufkonventionen hast (Uebergabe der Funktionsparameter, Rueckgabewerte), die sich mit keinem Standard decken (google), musst du die Parameter zumindest per inline-Asm vor dem Aufruf einrichten, oder du haeltst dich an einen Standard (was da geht haengt vom C-Compiler ab) und schreibst notfalls in deinem Asm-Code Wrapper fuer die Funktionen.



  • das war schon sehr hilfreich danke 🙂

    wenn ich dem asm code ein unterprogramm aufruf hätte wie oben erwähnt mit dem namen "label1" wie müsste ich diese dann in C aufrufen? einfach durch label1()? oder wie setzt der C kompiler funktionsnamen in asm-code um?

    gruß 🙂


Anmelden zum Antworten