2

私は最近、Deitel と Deitel の教科書から Simpletron の課題を作成しました。

Simpletron マシン語には、直接アドレッシングというアドレッシング モードが 1 つしかありません。
(つまり、命令のオペランド部分でアクセスしたいアドレスを指定する必要があります。)

したがって、実行時にアドレスを計算してアクセスする方法はないと思います。

したがって、次のようにします。

[pseudo-c]

int a[10];

...  

int i = 0;

while(a[i] > 100)  
{  

i++;

}  

..

自己修正コードまたはループの拡張が必要になりますが、正しいですか?
だから私の質問は:

教科書では、Simpletron は初期のコンピューターに非常に似ていると説明されています。

間接アドレッシング モード (レジスタ アドレッシングなど) は、プログラミングを容易にするために後続のアーキテクチャに導入されましたか?

4

1 に答える 1

0

それは正しいと思います。しかし、Simpletron は非常に単純なので、自己変更コードは 3 つの命令のみです。

// address to load is in accumulator
ADD loadinstruction // construct load instruction
STORE $ + 1         // write instruction to next word of memory
...                 // placeholder filled in by write instruction
// value is in accumulator

loadinstruction: .data 2000

これが可能なのは、Simpletron のプログラムがそのデータとメモリを共有しているからです。これを行わないコンピューター アーキテクチャもあります。たとえば、マイクロコントローラの PIC ライン。(RAM は 8 ビット幅ですが、プログラム メモリは 14 ビット幅です!) また、プログラムが ROM にある場合、プログラムを変更することはできません。明らかに十分です。

これが間接アドレッシング モードが開発された具体的な理由かどうかはわかりませんが、重要な理由であることは確かです。

于 2012-02-20T10:53:51.333 に答える