アドレスエラー・バスエラー
カテゴリー:
Universal Monitor 68000は自分のボードで動かせるMC68000, MC68010まで対応し、MC68020以降は動かす人もいないだろうから後回し、と思っていたのですが...
なんとMC68030で動かした方がおられます(リンク参照)。
これは判別やら例外処理やら対応しなくてはと思いソースを見たところ、MC68010のアドレスエラー・バスエラーの表示を作りかけたままになっておりました。これを放置したまま他の変更を行なうのは混乱の元(一応 Subversion で管理してはいますが...)なのでまずこれを完了させることにしました。
MC68000系では割り込みの他、ゼロ除算や未定義命令の実行などが発生したときにあらかじめ用意したルーチンを実行する機能があります。これを例外処理といいます。
原則として(復帰できるように)発生時のPCとSRをスタックに積んでから実行するのですが、アドレスエラーとバスエラーの場合はさらに多くの情報がスタックに積まれます。