独臂人道:“不错,你好好瞧着。你那本拳经刀谱,前面缺了两页,所以你总是说瞧不懂。那缺了的两页,就在这人身上
1. 地址管理
PDP11最大的特点是其UNIBUS系统,CPU对所有设备的访问都通过单一总线来完成。因此,所有设备都具有统一的编址规则。也就是说,所有设备,包括Memory、Register、外设、Device Register等都具有统一的地址。外设、Device Register等编址在高地址空间上。
PDP-11总线为16位,故其虚存空间为64K。但是,PDP-11可配置256K物理内存。为有效使用物理内存空间,使用“Page”将虚存空间映射到物理空间。每个page 8K字节,每个程序拥有8个virtual Page,分别映射到8个物理Page上。
具体来说,PDP11有两种内存管理模式:
(1)“存管系统关闭”
系统初启时,处于此种状态。此时,系统自动将virtual地址空间的前7个page映射到物理空间的前7个page,但virtual地址空间的第8个page会被映射到物理地址的最后一个page——以访问外设。
(2)“存管系统开启”
此种状态下,针对Kernel和User模式,各有8个Page address register来进行映射。每个Address Register对应一个virtual Page,记录的是该page对应于物理地址空间的首地址(以block——64字节为单位)。
具体方法如下:
(1)根据virtual地址计算出逻辑页和页内偏移;
(2)物理地址 =该页的Address Register的数值*64 +页内偏移
【注】:需要注意的是,很多情况下,源代码中使用Segment来表示Page。但是,segment有时又用作程序的分段,如text、data、bss。所以,这里使用page的话,更清晰,更容易理解。
【思考题】:我们想把虚存地址中前6个Page映射到物理内存的前6个Page。
请问:前6个Address Register的值应该设置为多少呢?
2.指令寻址
莱昂氏书中对各种编址方式进行了详细的讲解,唯一需要提一下的是:
(1)自动减一(加一)方式,如:
mov -(r1), r2
(2)变址方式,如:
clr 2(r0)
它们“变化”的单位是不同的。
对(1),它减去的一是一个Word;
【注】:PDP-11还有一套基于Byte的指令,其特点是在正常的指令名后加一个“b”用来结尾,如movb等等。这套指令在源码中使用较少。
而(2)中的2,是2个Bytes。
博客地址:http://blog.csdn.net/cszhao1980/article/details/7567586