我在将字符串复制到 Assembly 中的空数组时遇到问题。
首先,我得到了一些我想复制的垃圾而不是字符串。
其次,该程序应该使用最多 100 个字符的字符串,但是当我声明一个包含 100 个字符的数组时,我在使用 gcc 编译后得到“ ***堆栈粉碎检测*** ”。
#include<stdio.h>
void main() {
char *s="aac";
char t[4];
asm volatile (
".intel_syntax noprefix;"
"mov eax, %0;"
"push eax;"
"mov eax, %1;"
"push eax;"
"call printing;"
"jmp end;"
"printing:"
"push ebp;"
"mov ebp,esp;"
"push eax;"
"push ebx;"
"push ecx;"
"push edx;"
"mov ebx,[ebp+12];"
"mov eax,[ebp+8];"
"mov ecx,eax;"
"copying:"
"mov dl,[ebx];"
"mov [eax],dl;"
"inc ebx;"
"inc eax;"
"cmp dl,0;"
"jnz copying;"
"xor edx,edx;"
"mov eax,4;"
"mov ebx,1;"
"mov edx,3;"
"int 0x80;"
"pop edx;"
"pop ecx;"
"pop ebx;"
"pop eax;"
"pop ebp;"
"ret 4;"
"end:"
".att_syntax prefix;"
:
:"r" (s), "r" (t)
:"eax"
);
printf("\n");
}
我是大会的新手,所以请帮助我。
先感谢您