我正在try 调用本地机器语言代码.以下是我到目前为止所拥有的(它得到一个总线错误):
char prog[] = {'\xc3'}; // x86 ret instruction
int main()
{
typedef double (*dfunc)();
dfunc d = (dfunc)(&prog[0]);
(*d)();
return 0;
}
它确实正确地调用了函数,并到达ret指令.但是当它试图执行ret指令时,它有一个SIGBUS错误.是因为我在一个未被清除的页面上执行代码还是类似的?
那么我到底做错了什么呢?