Unter DevC++ asm verwenden
-
Hallo Leute,
Ich hab in meinem C++ Programm eine for-Schleife durch einen AssemlberCode ersetzt den ich aus dem Internet kopiert habe weil der schneller ist.
Ich verwende DevC++ und ich weiß nicht ob das von der IDE abhängig ist und ich kenne mich auch nicht besonders mit Assembler aus aber kann mir jemand sagen was daran falsch ist?void* b = buffer; //__asm { // Funktioniert nicht mit einem Block =( asm("mov ecx, 256*256"); asm("mov ebx, b"); asm("label:"); asm("mov al,[ebx+0]"); asm("mov ah,[ebx+2]"); asm("mov [ebx+2],al"); asm("mov [ebx+0],ah"); asm("add ebx,3"); asm("dec ecx"); asm("jnz label");
Fehlermeldung:
Assemlber messages: too many memory references for `mov' too many memory references for `mov' invalid char '[' beginning operand 2 `[ebx+0]' invalid char '[' beginning operand 2 `[ebx+2]' invalid char '[' beginning operand 1 `[ebx+2]' invalid char '[' beginning operand 1 `[ebx+0]' too many memory references for `add' no instruction mnemonic suffix given and no register operands; can't size instruction
Könnt ihr mir helfen?
-
LukasBanana schrieb:
...aber kann mir jemand sagen was daran falsch ist?
...Hi Bruder !
Die Antwort ist einfach: einfach alles !DEVCPP benutzt die AT&T Syntax (
Augenverletzungsgefahr
)
Guckst du hier:
http://www.bloodshed.net/dev/faq.html#asm
-
Soll das heißen dass ich anstatt 'asm', '__asm' verwenden soll?
-
LukasBanana schrieb:
Soll das heißen dass ich anstatt 'asm', '__asm' verwenden soll?
Och Mennoooo, ist das AT&T Syntax ? Das ist doch nur ein Schlüsselwort für den Compiler, um ihn in den Assemblermodus zu schalten.
AT&T-Assembler ist anders als Intel-Assembler.
Eine kleine Tabelle mit Unterschieden findest du hier:
http://www.informatik.htw-dresden.de/~beck/ASM/assembler.html
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.