今年(2023年)最後の更新になります。では、はじめます。
観光地に行くと、ホテルや、観光案内所で、観光地図を配っています。詳しいGoogleの地図よりもかえって、分かりやすかったりします。木村 泉先生のOHPからの引用ですが、PDPー11の機械語命令形このようになっていたんだと認識を新たにしました。Balconが、勝手に信号機の絵と色をつけています。信号機は通常、“青、黄、赤“の順で並んでいます。この表にある数字を、この順に並べると、機械語の命令になります。
例えばADD命令は青が0黄色が6のところにあるので、06が機械語命令の、オペレータ(オペコード)です。同様にSUBは、青が、1、黄色が6なので、16がオペコードになります。赤はどうなるかというと、オペランドを二つ取る命令は、8進二桁で済むので、赤は関係ありません。
JSRはサブルーチンにジャンプする命令ですが、青が0、黄色が0、赤が4なので、004で始まる機械語になります。
他の2オペランドを見ますと、1番多用する命令はMOV命令だと思います。この命令は第一オペランドのデータを第二オペランドにコピーして書き込みます。データを移すようにとれるねー明tぐですが、第一オペランドのデータは、変化しません。MOV命令は1語を移動するMOVと1バイトを移動するMOVBの2種がありますが、それぞれ01と11となります。他の2オペランド命令も0から始まる場合は、1語に作用し、1で始まる命令は1バイトの命令です。ADD、SUBは、byte演算はありません。CMPは比較で、結果によってPSW(フラグ)をセットします。比較の基準は第2オペランドなので、SUBと逆の関係なので注意が必要です。
BITはビットをテストする命令で、他のCPUだったら、AND命令、BISは、一般のCPUだったら、OR命令です。BICは、ビットをクリヤーする命令で、
d <-(〜s)^ d
を計算します。ここで〜はビット反転、^は排他的論理和を表します。図の灰色の部分の07、17で始まる機械語は、オプションで、下位のモデルでは実装されていません。驚くべきは、XORがオプションでした。XORは値を 0リセットするとか、パリティのチェックの時にに便利なんですが、PDP−11にはCLR命令があるので必要ないかもしれません。
オペランドを一つ取る命令や、オペランドを取らない命令(オレンジ色のところ)、分岐命令やなどの命令は別の機会にします。
16ビットCPUの完成形と言われたPDP-11 の機械語命令体系はいかがでしたでしょうか。来年も、続けますのでよろしくお願いします。では、良いお年を。
(アドレッシングモードと分岐命令の巻につづく)