У меня проблемы с решением школьного упражнения, я должен изменить массив символов в c, используя встроенную сборку.В этом случае измените «ahoy» на «aXoy», но я получаю ошибку сегментации.Это мой код:
#include <stdio.h>
int main() {
char string[] = "ahoy";
__asm__ volatile (
"mov %0, %%eax;"
"movb $'X', 1(%%eax);"
: "=m"(string) : "0"(string) : "memory", "eax");
printf("%s\n", string);
return 0
}
с этим: "mov %0, %%eax;"
Я пытаюсь сохранить адрес массива в регистре
, затем с этим: "movb $'X', 1(%%eax);"
Я хочу сохранить байт'X' в месте, указанном (%% eax) смещением на 1 байт (символ),
У меня есть строка как в качестве вывода, так и ввода, и "memory", "eax" в клоббере, так как ямодифицируя оба.Что не так с моим кодом?