1

同様の質問がされていることは知っていますが、とにかく聞いてください。

私は今学期にかなりの数の Easy68k プログラムを作成しましたが、org ディレクティブが常に $1000、または $2000、または $2500 に設定されている理由に興味があります。

答えは「個人的な慣習による」ですが、次のことを理解することにもっと興味があります。

  • org ディレクティブを設定する利点は何ですか。CPU は 0x0 から 0xffffffff まで何でも実行できるので、プログラムの開始を 0x1000 までオフセットする必要はありますか?

例えば:

    org $1000
start:
    moveq #9, d0
    trap  #15

    end start

動作しますが、下に 4096 バイトオフセットされます

start:
    moveq #9, d0
    trap  #15

    end start

も機能しますが、まったくオフセットされません

では、なぜこの指令が必要なのでしょうか? 特定の目的のために [0x0, 0x1000) を予約していないので、このオフセットを保持するポイントは何ですか?

ここまでの結論

  • Easy68k には、グローバル変数のデフォルトの場所がありません。それらは pc に配置されます (通常、慣例によりプログラムの最後に配置されます)。
  • Easy68k のデフォルトのスタック ポインタは 0 で、下方向に 0xffffffe まで成長します (ワード アラインメントされます)。これは、[0, 0x1000) 領域との競合がないことを意味します。実際、[0, 0x1000) 領域が破損する前にコードが破損します。

私は本当に興味があります。

お早めにどうぞ!

〜ドミトリー

4

1 に答える 1

0

アドレス 0 からおよそ $800 のアドレスは、68000 の例外ベクトル用に予約されています。$1000 はデフォルトの開始アドレスとして使用され、予約された領域をクリアします。スタックはデフォルトでメモリの最上部に配置され、アドレス 0 に向かって増加します。

于 2016-07-07T11:54:47.560 に答える