因为我们现在介绍的的 Unix V6 是最初的原始版本,这个版本运行在 DEC 公司的 PDP 11/40 设备上。
PDP-11 系列是由数字设备制造公司 (Digital Equipment Corporation)DEC 设计制造的处理装置。博客的内容是由 PDP 11/40 为处理对象的。
1. PDP-11/40 是 16 位的计算机,
指令和
数据基本上都是以16bit进行处理的。 (难道说每个 指令都是 16 bit 吗?)
2. 处理器处理数据的单位称为 字 (word),
对于PDP-11/40 而言,一个字的宽度为16bit。
3. PDP-11/40 没有专用的I/O 总线,而是使用一名为Unibus的总线用于数据的输入和输出。
4.
PDP-11/40的寄存器 以及
周边设备的寄存器都被映射到
内存的最高的 8 KB空间。因此可以采用与操作内存相同的方式来操作寄存器。(也就是内存映射I/O, memorry mapped I/O)I/O 其实也就是读写寄存器罢了。
5. 利用内存映射 I/O,我们可以利用C语言,将寄存器的操作写成如下形式。
/*寄存器被映射的地址。内存的
高8KB为寄存器地址*/
#define REG_ADDRESS 0170000
struct {
int integ;
};
mian(){
int a;
a = REG_ADDRESS->integ; /*从寄存器中读取数据*/
REG_ADDRESS->integ =0; /*向寄存器中写入数据*/
}
#define REG_ADDRESS 0170000
struct {
int integ;
};
mian(){
int a;
a = REG_ADDRESS->integ; /*从寄存器中读取数据*/
REG_ADDRESS->integ =0; /*向寄存器中写入数据*/
}
6. PSW 状态寄存器,也成为处理器状态字,一台PDP-11/40中仅此一个。(Processor Status Word, PSW), 是一个16位的寄存器