从莱昂氏unix6TH注释开始,读了一本PDP11的手册,对其硬件有了大致的理解。尽管该机器最早出现在40年前,但不管从软件还是硬件上,都有许多可圈可点之处。
硬件上,采用单总路线结构,有可选的虚拟内存管理单元、浮点处理单元,cpu支持cache,提供多级执行保护,支持中断和DMA,有栈结构(尽管没有专门的操纵指令)。对于学习计算机组成原理来说,这个系统是可作为一个起点:它并不复杂,而且器件足够大,正好可以作为教学用的演示,来加深对机器的理解。
软件上,在该机型上的unix操作系统本身就是一个传奇。而开源的系统源代码,也给学习者一个很好的样例。理论上只需要会C语言,加点汇编,你就能读懂,甚至能自己动手做些修改。但一个系统就是一张网,那怕是这种最初的操作系统。
将这两者结合起来,你应该可以这样说:这就是计算机,这就是操作系统。这样的学习可能不是一条捷径,但可以满足追根溯的好奇心,能够理解计算机之根本。为什么不能设计一门课程,能够将这两门课程紧密的结合起来?国外已经有相应的教学系统,网上也有很多可用的模拟器,自己设计一个计算机系统,自己编写一个操作系统,也不是不可能的。事实上,历史上的经典机器,正好可以充当这一角色。也许它们是有些老了,跟不上时代的潮流,但它们并不是虚构的角色。如果今天的你,能够做到40年前的别人那样好,你今后应该也会成为一个大师。也许每个学生都会说出一堆的抱怨,但又有哪个学生敢说这样的话?
在了解了PDP11后结构和指令集后,需要学习一下汇编语言语法:Macro-11的语法。然后,需要有个实验平台,simh可模拟各种老机器,但使用起来不太方便。
pdp11gui在它的基础上加了图形界面,而且可用于汇编编程(该站的作者蛮值得学习的,有爱好,又能动手)。从该站,也可找到许多链接资源,有时间可以好好逛逛,全当看故事,每天你花在网上八卦的时间还少吗?自嘲一下:(
很难找到关于Macro-11的书了,回来试了一下超星数图,还真有三本关于PDP11的书。
好了,现在有了平台,也有了资料,可以体验一下了,对照《汇编语言程序设计(pdp-11)》。真是不方便,如果完全用机器码的话,每条指令都需要自己的查机器吗,然后输入到确定的地址。