Assemblercode mit Dev-C++ in Intel-Syntax
-
Hier wird öfters nach Einbau von Assemblercode gefragt.
Beispiel mit AT&T-Syntax und globalen Variablen:
#include <iostream> const char NL = '\n'; void wait() { std::cin.clear(); std::streambuf * pbuf = std::cin.rdbuf(); std::streamsize size = pbuf->in_avail(); std::cin.ignore(size); std::cin.get(); } using std::cout; //globale Variablen int a = 1; int b = 2; int main() { cout << "Ausgangssituation: " << NL; cout << &a << ": " << a << "\t " << &b << ": " << b << NL << NL; cout << "Tausch mittels Register eax und ebx: " << NL; asm("mov _b, %eax"); //AT&T Syntax bei Dev-C++ asm("mov _a, %ebx"); asm("mov %eax, _a"); asm("mov %ebx, _b"); cout << &a << ": " << a << "\t " << &b << ": " << b << NL; wait(); }
Um die einfachere Intel-Syntax anstelle AT&T-Syntax verwenden zu können, muss man unter Werkzeuge - Compiler-Optionen beim Compiler-Aufruf folgenden Parameter hinzufügen:
-masm=intel
#include <iostream> const char NL = '\n'; void wait() { std::cin.clear(); std::streambuf * pbuf = std::cin.rdbuf(); std::streamsize size = pbuf->in_avail(); std::cin.ignore(size); std::cin.get(); } using std::cout; //globale Variablen int a = 1; int b = 2; int main() { cout << "Ausgangssituation: " << NL; cout << &a << ": " << a << "\t " << &b << ": " << b << NL << NL; cout << "Tausch mittels Register eax und ebx: " << NL; asm("mov eax, _b"); //Intel Syntax bei Dev-C++ mit -masm=intel asm("mov ebx, _a"); asm("mov _a, eax"); asm("mov _b, ebx"); cout << &a << ": " << a << "\t " << &b << ": " << b << NL; wait(); }
Lokale Variablen können z.B. wie folgt angesprochen werden:
#include <iostream> const char NL = '\n'; void wait() { std::cin.clear(); std::streambuf * pbuf = std::cin.rdbuf(); std::streamsize size = pbuf->in_avail(); std::cin.ignore(size); std::cin.get(); } using std::cout; int main() { //lokale Variablen int a, b; asm( "mov eax, 42" : "=a" ( a ) ); asm( "mov ebx, -4711" : "=b" ( b ) ); cout << &a << ": " << a << "\t " << &b << ": " << b << NL; wait(); }
-
-> faq ?
-
Super, und wieder tendiere ich mehr für MinGW
MfG RoaN;
-
Super, und wieder tendiere ich mehr für MinGW
Begründung?
-
KP wie ich darauf gekommen bin.