insn: xxxx | xxxx | xxxx | xxxx (R-type) op rC rA rB xxxx | xxxx | xxxx xxxx (K8-type) op rC K8 xxxx | xxxx | xxxx | xxxx (K4-type) op rC rA K4 op = 0: LD rC, K8 (load-at-immediate) RF[rC] = DMem[K8] op = 1: ST rC, K8 (store-at-immediate) DMem[K8] = RF[rC] op = 2: ADD rC, rA, rB (addition) RF[rC] = RF[rA] + RF[rB] op = 3: LDC rC, K8 (load-constant) RF[rC] = SignExtend(K8) op = 4: SUB rC, rA, rB (subtraction) RF[rC] = RF[rA] - RF[rB] op = 5: JMPZ rC, K8 (jump-if-zero) if(RF[rC] == 0) PC = PC + SignExtend(K8) op = 6: JMPN rC, K8 (jump-if-negative) if(RF[rC][15] == 1) PC = PC + SignExtend(K8) op = 7: JMP K8 (jump) PC = PC + SignExtend(K8) op = 8: MUL rC, rA, rB (multiply) RF[rC] = RF[rA] * RF[rB] op = 9: DIV rC, rA, rB (divide) RF[rC] = RF[rA] / RF[rB] op = 10: MOD rC, rA, rB (modulus) RF[rC] = RF[rA] % RF[rB] op = 11: END [simulation completes] op = 13: LDR rC, K4(rB) (load-at-register) RF[rC] = DMem[RF[rB] + SignExtend(K4)] op = 14: STR rC, K4(rB) (store-at-register) DMem[RF[rB] + SignExtend(K4)] = RF[rC]