(MFC mit dem...) assembler generierten objektcode einbinden



  • ein herzliches hallo,
    ich spiele im momemt ein wenig mit assembler herum, um ein verständnis für das funktionieren des rechners und auch von c++-code zu bekommen.
    zur frage: wie kann ich vorher mit dem assembler erzeugte .obj-dateien
    in c-code einbinden, denn mit "__asm" im c++-code kann ich ja leider nicht die
    vollen möglichkeiten des assemblers ausnutzen.
    thx, pablo



  • Hallo,
    ist keine Standard-C++ Frage. Welchen Compiler verwendest du?



  • n'morgen HumeSikkins,
    ich verwende das visual studio 97.
    Sorry, wusste nicht wohin mit der Frage.
    Schönen Tag noch
    pablo



  • du musst einfach nur die Prototypen für die Funktion schreiben und mit extern "C" makieren.

    Hier ist mal ein Beispiel für den GCC, ich hoffe das bringt dich weiter, auch wenn du den Assembler Code mit dem MS VC++ nicht direkt übernehmen kannst

    .file   "object.s"
        .text
    .globl strlen
        .type   strlen,@function
    
    strlen:
        ## size of a string
        pushl   %ebp
            movl    %esp, %ebp
            subl    $4, %esp
        movl 0x08(%ebp),%edi /*%edi = s*/
            xorl %ecx,%ecx
            decl %ecx            /*%ecx = -1*/
            xorb %al,%al         /*%al = `0`*/
            repne scasb          /*%edi++ == %al?*/
            incl %ecx
            incl %ecx
            negl %ecx            /*%ecx=-%ecx*/
            movl %ecx,%eax
    
    #include <cstddef>
    #include <iostream>
    using namespace std;
    
    extern "C" {
      size_t strlen(const char *s);
    }
    
    int main() {
      cout << strlen("hallo") << endl;
    }
    

Anmelden zum Antworten