2012-03-29 8 views
1

Ich versuche Montag aus einer Reihe von sehr guten Tutorials auf youtube gepostet zu lernen:Inline Assembly in Netbeans mit C++

http://www.youtube.com/watch?v=guru397zg2g&list=PL0C5C980A28FEE68D&feature=plcp&context=C4ca8d4cFDvjVQa1PpcFM2reYRFji1sQFkiYY545AxtksGRUnLWSY=

Ich bin vertraut mit C++ und Java-Programmierung in Netbeans und ich bin Verwenden des MinGW-Compiler-Sets. Ich habe meine C++ - und Assembler-Compiler in den Netbeans-Compiler-Eigenschaften festgelegt.

Mein C++ - Code kompiliert jedoch unter Verwendung _asm {} zu versuchen, Inline-Assembly-Code nicht ordnungsgemäß zu kompilieren.

Der Fehler Ich erhalte ist:

main.cpp: In function 'int getValueFromASM()': 

main.cpp:18:5: error: '_asm' was not declared in this scope 

main.cpp:18:10: error: expected ';' before '{' token 

make[2]: *** [build/Debug/MinGW_1-Windows/main.o] Error 1 

make[1]: *** [.build-conf] Error 2 

make: *** [.build-impl] Error 2 

Der Code ist:

#include <cstdlib> 
#include <iostream> 

using namespace std; 



int getValueFromASM() 
{ 
    _asm { 
     mov eax, 39 
    } 
} 

int main(int argc, char** argv) { 

    cout << "Hello World from C++ !\n"; 

    cout << "ASM said " << getValueFromASM() << endl; 

    cout << "Back in the program before close.\n"; 

    return 0; 

} 

jemand mich in die Richtung, wie Inline zu bekommen Punkt konnte Montage in Netbeans arbeiten.

+0

Wenn Sie Windows verwenden, sollten Sie besser eine kostenlose Version von MS-Tools herunterladen. Ich kenne nicht die moderne Syntax für MS-In-Line-Assembler (mehr als 20 Jahre, seit ich solche Sachen mit MS-Tools gemacht habe), aber GNU In-Line-Assembler wird wahrscheinlich zunehmend anders werden. – gbulmer

Antwort

4

Sie erhalten den Kompilierungsfehler, weil Sie die falsche Syntax verwenden.

Versuchen Sie getValueFromASM Methode diese zu ändern:

int getValueFromASM() 
{ 
    asm("mov $39, %eax"); 
} 

Ein guter Leitfaden für die Inline-Montage mit GCC finden Sie hier: http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

+0

Danke, sehr nützliche Anleitung .. Anoying, dass die AT & T-Version der Montage ist fast das komplette Gegenteil von Intel-Assembly, aber denke mal, wie es ist. – Zac