[ Home | Programming Tips | Mail ]
誰が最初に間違いを広め始めたか解らないのですが、
タイプ2のシステムエラー(address error)は 68000を使った 68K Macでしか起こりません。
ということが多くの Webや雑誌等に書かれていますが、完全に間違いです。
確かに 68000で奇数 addressから word data accessを行うと address errorが発生しますが address errorが発生するのはその場合だけではありません。
68020/68030/68040でも address errorは発生します。
これらの processorでは奇数 addressからの word data accessでは address errorになりませんが、Program counter(実行する命令の addressを示す register)が奇数になるとやはり address errorになります。
これは programの bugで stack内容を誤って壊し、return addressが狂えば 簡単に 起こります。
以下の codeの様なことが起こるわけです。Compileして動かしてみましょう。(^^;;
PowerMacの 68K Emulatorは疑似 68020ですからここでも address errorは起こります。
asm void main(void)
{
move.l #1,-(sp) // ゴミ return address
rts // 自爆(dsAddressErr)
}
従って
タイプ2のシステムエラー(address error)は全ての Macで起こります。が正しい記述です。
この Pageは MacOS X + Radio UserLand で作っています。