[ Home | Programming Tips | Mail ]

Address error


Address errorは全ての Macで起こります

 誰が最初に間違いを広め始めたか解らないのですが、

タイプ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して動かしてみましょう。(^^;;

    asm void    main(void)
    {
        move.l  #1,-(sp)  // ゴミ return address
        rts               // 自爆(dsAddressErr)
    }
 PowerMacの 68K Emulatorは疑似 68020ですからここでも address errorは起こります。
 従って
タイプ2のシステムエラー(address error)は全ての Macで起こります。
が正しい記述です。


この Pageは MacOS X + Radio UserLand で作っています。