我试图编辑char数组的第一个字母。
暂时不要介意 y 变量。
#include <stdio.h>
int main(void)
{
char* s = "some_text";
short int y;
asm volatile
(
".intel_syntax noprefix;"
"mov eax, %1;"
"mov byte ptr [eax], 'D';"
".att_syntax prefix;"
: "=r" (y) // %0
: "r" (s) // %1
: "eax"
);
printf("s = %s, y = %hd\n", s, y);
return 0;
}
在linux下编译,使用以下命令:
gcc -o file file.c -m32
输出:
(core dumped)
可能出现什么问题?
答案 0 :(得分:3)
写入字符串文字是C中未定义的行为。
要创建可写字符串,请使用数组将其存储在堆栈中:
char s[] = "some_text";