Я пытаюсь вызвать собственный код машинного языка. Вот что я до сих пор (он получает ошибку шины):
char prog[] = {'\xc3'}; // x86 ret instruction
int main()
{
typedef double (*dfunc)();
dfunc d = (dfunc)(&prog[0]);
(*d)();
return 0;
}
Он правильно вызывает функцию и получает ее в инструкцию ret. Но когда он пытается выполнить инструкцию ret, он имеет ошибку SIGBUS. Это потому, что я выполняю код на странице, которая не очищается для выполнения или что-то в этом роде?
Так что я делаю неправильно здесь?