次のコードを実行しようとするとバスエラーが発生する理由を見つける必要があるアセンブリプログラミングの課題に遭遇しました。何度もグーグルした後でも、理由がわかりません。アセンブリ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;
}