所以,我正在设计自己的虚拟 CPU。我有一些寄存器和内存,可以执行一些基本指令。但是,现在我被困住了。
我如何区分(在我组装的“机器代码”中):
LDA $02 ; Load the hex value 0x01 into register A
和
LDA B ; Load the value of B into A
现在我已将操作数 ($02
和B
) 都编码为0x02
. 该指令LDA
被编码为单个字(此时为 uint16)。
这显然会带来问题。解决此问题的最佳方法是什么?我想我有以下选择:
- 以某种方式将我们正在处理的值或寄存器(或稍后的内存位置)的指令编码为 16 位
- 为不同的操作数创建不同的指令。例如
LOADIA
,LOADRA
,LOADMA
分别用于文字、寄存器和内存。
恕我直言,选项 1 是最好的。您能否确认 1 是一个有效选项或提供其他处理此问题的方法。谢谢!