x64 Assembly in Visual Studio 2012/2010



  • ich habe mir ein tutorial über x64 Assembly angeguckt http://www.youtube.com/watch?v=guru397zg2g
    darin wird erst ein neues projekt erstellt, das ganze auf 64bit gestellt und dann eine neue .asm datei hinzugefügt. als letztes werden noch die BuildCustomizations geänder (ein haken hinzugefügt) und als dann die datei includet wurde, könne eine funktion aufgerufen werden. der code sah so aus:

    #include <iostream>
    using namespace std;
    
    #include "MyASM.asm"
    
    int main(){
    	cout << "getValue: " << getValue() << '\n';
    
    	getchar();
    	return 0;
    }
    
    .code
    getValue proc
    	mov eax, 39
    	ret
    getValue endp
    end
    

    Ich habe es in Visual Studio 2010 pro und 2012 express ausgetestet und bei beiden kommen in etwa die selben fehlermeldungen:

    1>------ Build started: Project: TestConsoleASM, Configuration: Debug x64 ------
    1>  main.cpp
    1>f:\testconsoleasm\testconsoleasm\MyASM.asm(1): error C2059: syntax error : '.'
    1>main.cpp(6): error C2143: syntax error : missing ';' before '{'
    1>main.cpp(6): error C2447: '{' : missing function header (old-style formal list?)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    

    was habe ich vergessen oder falsch gemacht?



  • gamer8o4 schrieb:

    ... als dann die datei includet wurde, könne eine funktion aufgerufen werden. der code sah so aus: ...

    Nein, die Datei wurde nicht includet und der Code sieht anders aus. Tatsächlich wurde eine ASM-Datei erstellt, die der Compiler separat (= "extern") assembliert und dann hinzulinkt.

    viele grüße
    ralph



  • und wie macht man das dann? kannst du mir eine art kurzanleitung schreiben oder hast du vielleicht ein tutorial? ich hab das tutorial ein paar mal angeguckt, aber da steckt keine erkennbare lösung für mich drin und google spricht für mich gerade auch in rätseln 😃



  • Dann guck es dir eben noch mal genauer an und vergleiche seinen mit deinen Code.

    Inkludiert er im Video die ASM-Datei?
    Was macht er stattdessen bzw. was fehlt bei dir?



  • okay, habs:

    extern "C" int getValue();
    

Anmelden zum Antworten