我最近完成了Simpletron任务 来自Deitel和Deitel的教科书。
Simpletron机器语言只有一种寻址模式,即直接寻址 (也就是说,您必须在指令的操作数部分指定要访问的地址。)
所以我认为没有办法在运行时计算地址并访问它。
所以做这样的事情:
[pseudo-c]
int a[10];
...
int i = 0;
while(a[i] > 100)
{
i++;
}
..
需要一些自修改代码或扩展循环,我是否正确? 所以我的问题是:
教科书将Simpletron与早期的计算机非常相似。
后续架构中引入的间接寻址模式(如寄存器寻址)是否使编程更容易?
答案 0 :(得分:0)
我相信这是正确的。但是Simpletron非常简单,自修改代码只有三个指令:
// 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中,你也无法修改程序。显然已经足够了。
我不知道这是否是开发间接寻址模式的特定原因,但它肯定是一个重要的原因。