bitは次のように並んでいる。
bit | 名前 | 略称 |
1,2 | Access Control Field | ACF |
3 | Expansion Direction | ED |
6 | Written Into | W |
8〜14 | Page Length Field | PLF |
00 | 割り当てなし |
01 | read only |
10 | (未使用) |
11 | read write |
0 | ページの最小アドレスから割り当て |
1 | ページの最大アドレスから割り当て |
0 | 書き込みなし |
1 | 書き込みあり |
bit | 説明 |
0〜2 | レジスター番号 |
3〜7 | bit0〜2で指定したレジスターの変化値 |
8〜10 | レジスター番号 |
11〜15 | bit8〜10で指定したレジスターの変化値 |
m40.sのbackupがおこなっているように、 SSR1がなくてもある程度の推理は可能である。 が、trap.cで指摘されているようにかならずしもうまくいくとはかぎらない。
PDP-11/45ではStatus Register 1(SR1)、 PDP-11/70のprocessor handbookではMemory Management Register1(MMR1)など、 名前はまちまちである。ここではUNIXでの名前に統一してある。
bit | 説明 |
0 | USER separation enable/disable |
1 | SUPERVISOR separation enable/disable |
2 | KERNEL separation enable/disable |
4 | ENABLE 22-BIT MAPPING/ENABLE 18-BIT MAPPING |
5 | ENABLE UNIBUS MAP/DISABLE UNIBUS MAP |
PDP-11の仮想記憶では、でかいプログラムを小さなメモリ空間で使う、 ということは不可能である。 どうしてもやりたければ、 プログラムを分割して必要な部分をメモリ上に読み込んで実行する、 というオーバーロードの技術を利用することになる。
UNIX第6版ではオーバーロードは採用されていないが、 その後の2BSDシリーズではこってりと使われており、 「どうしてこれがPDP-11で動くんだ?」というような魔法を下支えしている。 16bitの桎梏のもたらした徒花と言えよう。