我最近做了个简单的作业
从迪特尔和迪特尔教科书。
Simpletron机器语言只有一种寻址方式,即直接寻址。
(即,必须在指令的操作数部分指定要访问的地址。)
所以我认为没有办法在运行时计算地址并访问它。
所以这样做:
[pseudo-c]
int a[10];
...
int i = 0;
while(a[i] > 100)
{
i++;
}
..
需要一些自我修改的代码或扩展循环,对吗?
所以我的问题是:
这本教科书中的Simpletron与早期的计算机非常相似。
在随后的体系结构中是否引入了间接寻址模式(如寄存器寻址)以简化编程?
最佳答案
我相信那是对的但是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中,显然也不能修改它。
我不知道这是否是产生间接寻址模式的具体原因,但这无疑是一个重要的原因。