Aufrufen von C-Funktionen, die von x86 assembly language

Ist es möglich, zum generieren von Assembler-Funktionen von C-Funktionen mit GCC, so dass Sie aufgerufen werden, aus der eine assembly-Sprache-Programm? Ich weiß, dass gcc kompiliert die C-zu-Maschine-code (die leicht zerlegt werden, in Assembler), und ich weiß schon, dass es möglich ist,inline-Assembler-Funktionen in C, aber ich habe noch nicht einen Weg gefunden, zum aufrufen von C-Funktionen aus dem Assembler-Programme, die im Grunde ist die Antwort.

Hier bin ich versucht, inline-einer C-Funktion in ein x86-Assembler-Programm. Wenn inlining nicht möglich ist, dann gibt es eine andere Möglichkeit zum aufrufen einer C-Funktion aus Assembler-Programm?

.686p
.model flat,stdcall
.stack 2048

.data

.code
start:

invoke  ExitProcess, 0

printSomething PROC ;now I'm attempting to inline a C function here
    void printSomething(thingToPrint){
        printf("This is a C function that I want to invoke from an assembly language program.");
        printf("There must be some way to do this - is it possible somehow?");
    }
printSomething ENDP

end start
  • Ich erinnere mich nicht alle details, aber Sie brauchen nur zu kompilieren, um Objekt-Dateien und verlinken Sie Sie. Sie müssen nur wissen, was Aufrufkonventionen verwendet werden, dass beim Aufruf der Funktion.
  • Man könnte hinzufügen, der Assembler-code, der zeigt, was Sie versucht haben, und sagen, wie es nicht kompiliert werden kann oder wie sich es verhält sich falsch. Es wäre viel einfacher, für eine Antwort darauf hinweisen, was das problem mit ihm.
  • Sie können lernen, wie Sie dies tun, indem er eine C-Funktion, die ruft die Funktion, die Sie anrufen möchten, kompilieren Sie es, um Assembler (-S), und Untersuchung der Ergebnisse. Ich würde auch den Punkt, den Sie bei der "psABI", aber ich kann nicht finden, eine Kopie mehr.
  • Natürlich können Sie dies tun. Befolgen Sie einfach die Regeln Ihres Compilers ' s ABI.
Schreibe einen Kommentar