无法确定加载到具有来自不同寄存器的偏移量的寄存器

Trouble Figuring out loading to register with offset from different register

我正在创建一个 8 位 CPU。我有基本指令,如 mov、ld、st、add、sub、mult、jmp。我正在尝试将我的说明放在一起。首先,我将一个值的基地址移入寄存器 1 (R1)。然后我想用值加载寄存器 2 (R2)。所以我的说明如下:

1 mov R1, 0xFFFF
2 ld R2, [R1+0]

我的操作码定义是:

ld: 0001
mov: 1111

注册码为:

R1: 0001
R2: 0010

所以我的二进制指令是这样的:

1 mov R1, 0xFFFF = 1111 0001 0xFFFF
2 ld R2, [R1+0] = 0001 00010 

但是在我的第二个加载方向上,我如何确保存储在我移动到 R1 的内存位置的值将被使用。这是我第一次用计算机体系结构做任何事情,所以我有点迷茫。

how can I ensure the value stored at the memory location I moved to R1 is going to be used.

通过构建您的硬件以正确处理先写后读的危险 (https://en.wikipedia.org/wiki/Hazard_(computer_architecture)#Data_hazards)。

两者都