Beispiel bitte



  • ich hätte gern ein Beispiel. Ich benutze Visual c++.

    #include "stdafx.h"
    #include <iostream.h>

    int Addieren(int,int);

    int main(int argc, char* argv[])
    {
    int a,b,z;
    cout <<"1. Summanden eingeben";
    cin >>a;
    cout <<"2. Summanden eingeben";
    cin >>b;
    z=Addieren(a,b);
    cout <<"Ergebniss: " <<z;
    return 0;
    }

    int Addieren (int c, int d)
    {
    /////Dieses bitte in Assembler
    int e;
    e=c+d;
    return e;
    /////Bis hierhin

    }



  • versuch mal die Assembler Ausgabe deines Compilers zu bekommen. Beim gcc geht das, ob das beim MSVC++ geht weiss ich nicht, lies dir mal die Doku durch.

    add:
            pushl   %ebp
            movl    %esp, %ebp
            movl    12(%ebp), %eax
            addl    8(%ebp), %eax
            popl    %ebp
            ret
    

    P.S.
    dein Code ist nicht standard konform und auch nicht sehr effizient.



  • @kin das ist doch AT&T syntax

    ich glaube dass der msavc nur intel unterstützt aber bin mir ned sicher



  • @kin das ist doch AT&T syntax

    ich glaube dass der msavc nur intel unterstützt aber bin mir ned sicher



  • deswegen hab ich ihm ja gesagt er soll schauen wie er dem MSVC++ die Assembler Ausgabe entlocken kann 🙂



  • Da muss man das Progrtamm anfangen zu debuggen (z.B. Haltepunkt in die erste Zeile der main setzen und F5 drücken) und dann unter Ansicht gibts irgendwo Disassemblierung oder ähnlich...da ist der asm-code 🙂



  • Die Assembler-Ausgabe des MSVC kann auch mittels dem Switch /Fa in eine Datei geschrieben werden.

    lg, phreaking



  • /FAs ist besser. Dann wird der Sourcecode und der Asm code zusammen ausgegeben. Ist dann übersichtlicher.

    Man kann das auch über das Menü einstellen. In der englischen VC++ version ist es unter: Project/settings - C/C++ - Category: Listing Files - listing file type: assembly with source code

    Er gibt dann das hier aus:

    ; 21 : int e;
    ; 22 : e=c+d;

    mov eax, DWORD PTR _c[ebp] add eax, DWORD PTR _d[ebp]
    mov DWORD PTR _e$[ebp], eax

    ; 23 : return e;

    mov eax, DWORD PTR _e$[ebp]


Anmelden zum Antworten