2
我想在asm中反转一个词,使用堆栈(例如Testing = gnitseT)。我试图自己做,但我的程序返回相同的字符串。帮助装配。反向字
我的代码:
#include <stdio.h>
int main(void) {
char *x = "Teststring";
asm (
".intel_syntax noprefix;"
"mov eax, %1;"
"xor bx,bx;"
"xor ecx,ecx;"
"pushloop:"
"mov cl, [eax];"
"cmp cl, 0;"
"jz poploop;"
"inc bx; "
"push eax;"
"inc eax;"
"jmp pushloop;"
"xor eax,eax;"
"poploop:"
"cmp bx, 0;"
"jz end;"
"pop eax;"
"inc eax;"
"dec bx;"
"jmp poploop;"
"end:"
"mov %0, eax;"
".att_syntax prefix;"
: "=r" (x)
: "r" (x)
: "eax","cl"
);
printf("x=%s", x);
return 0;
}
对于初学者来说,你不能只是切换到Intel语法编译器的背后,否则所有替代将是错误的。如果您想使用intel语法,请使用'-masm = intel'命令行开关。 – Jester
其中:“Teststring”是一个字符串文字。您无法更改其内容。 – rkhb