Mit C Wert an Assembler Funktion geben



  • Moin Moin,
    ich möchte Werte von C an eine Assembler Funktion übergeben die in einer .s Datei ist, aber wie mach ich das? Hab bei Google kein Beispiel gefunden.

    LG



  • LightBoom schrieb:

    Moin Moin,
    ich möchte Werte von C an eine Assembler Funktion übergeben die in einer .s Datei ist, aber wie mach ich das? Hab bei Google kein Beispiel gefunden.

    LG

    Einfach nen Funktionsprototypen in C definieren (oder deklarieren?), und aufrufen.

    void MyAssemblyFunc(int arg1, const char *arg2);
    // ...
    MyAssemblyFunc(120, "Aeiou");
    

    Assembler Code assemblieren und linken nicht vergessen, und pass auf Name-Wrangling auf.



  • Und wie ruft man dann die Werte in ASM ab?





  • LightBoom schrieb:

    Und wie ruft man dann die Werte in ASM ab?

    Bitte weniger Information, sonst könnte noch jemand auf die Idee kommen dir zu Helfen.



  • LightBoom schrieb:

    ich möchte Werte von C an eine Assembler Funktion übergeben die in einer .s Datei ist, aber wie mach ich das?

    Das ist natürlich nicht einfach. Um Dir eine richtige Antwort geben zu können, müsste man Betriebssystem (Win32, Win64, Linux32, Linux64), Compiler (VC, GCC, G++) und .s-Datei (AT&T-Syntax?) kennen. Der normale Weg ist, zunächst C- und Assembler-Dateien getrennt zu kompilieren/assemblieren und dann zu verlinken. Dazu muss in der Assembler-Datei ein Hinweis stehen, dass die Funktion außerhalb verfügbar ist ( .GLOBAL ) und in der C-Datei, dass eine externe Funktion aufgerufen wirden ( EXTERN bzw. EXTERN "C" für C++). Wie Werte übergeben und zurückgegeben werden, richtet sich nach der jeweiligen "calling convention".

    Am besten stellst Du die Frage nochmal im Assembler-Forum (dort ist es besser aufgehoben) und gibst die benötigten Informationen, dann kann ich Dir einen Beispielcode entwerfen.

    viele grüße
    ralph


Anmelden zum Antworten