読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

PDP-11仕様書あたりのメモ #ikebin

UNIX

01ssdd mov

8進数にへんかんして、 0500 SSDD

SS 05 DD 00

SS Source DD Destination

8進数で2桁 下の位はレジスタ

011402 mov (r4) r2

モード そのレジスタにたいしてどのような操作がなされているか r0 モード0 (r0) モード1

116520 11 movb 65 SS 20 DD

movb x(r5) (r0)+

mode 6 X(R)

0 R 1 (R) 2 (R)+ 6 X(R)

9d50 0004

movb 1バイトだけ転送する

普通のmov命令では2バイト単位で弄られる

レジスタ
|0 |
|1 |
|2 |
|3 |
|4 |
|5 |

movb 1バイト mov 2バイト

movb 4(r5), 6(r0)

オペランドで何バイトか決まる

即値

add $4, r2 062702 ADD SS DD add (r7)+, r2 ではない add #n, r2 add #4, r2 =add $4, r2(V6)

r7 汎用レジスタ

シンタックスシュガー

$とか#は流儀であり書き方

      0246 0248 024a
0246: 15f7 0001 0074  mov $1, 02c0

relative 相対 012767 mov #n A mov #1 02c0

A 相対アドレス

024c + 74 02c0

@ $n ← #n *A ← @A

@#A *$A

w >> 12

(x >> 6) &&& 7

ビット演算にしたほうが処理が圧倒的に早くなる

プログラムカウンター

let fetch() =
    let ret read16 mem pc
    pc <- pc + 2
    ret

必要なタイミングでfetchを行う。