opcodeと機械語の定義場所
opcodeの定義場所は↓
static const char *opcode[] = {
↓opcodeと同じインデックスに対応する機械語が定義されている
PDP18B/pdp18b_sys.c:686
static const int32 opc_val[] = {
例えば"HLT"は↓のように定義されている
0740040+I_OPR
sim> d -m 0 hlt
sim> e -m 0
0: HLT
sim> e 0
0: 740040
sim>
なので、"0740040"の部分だけで機械語はできあがっている
I_OPRは何かというと、
PDP18B/pdp18b_sys.c:413
PDP18B/pdp18b_sys.c:399
PDP18B/pdp18b_sys.c:392
4を18ビット左シフトした値がI_OPRであり、これを機械語に足している
18ビット左シフトすると、それはもう18ビットCPUの機械語の表現範囲を超えているので、
これは機械語部分というよりは、メタデータ的なものであると思われる。