我偶然发现了一个汇编编程挑战,我需要找出为什么以下代码在尝试运行它时会出现总线错误。经过多次谷歌搜索,我仍然无法弄清楚为什么..我对汇编 x86 的理解不是很好,任何关于找到解决方案的提示都将非常感激。
这是代码:
#include <stdlib.h>
int main(void) {
asm("pushf\n"
"orl $ 0x40000, (%esp)\n"
"popf\n");
*((int*) (((char*) malloc(5)) + 1)) = 23; // This line causes the Bus Error
return 0;
}