如果 LC3 中有 16 个寄存器,则立即数有多少位可用

How many bits will be available for the immediate value if there are 16 registers in the LC3

LC-3 有 16 个寄存器,每个寄存器长 64 位,还有 32 位指令。对于 ADD 指令的立即数,有多少位可用?我知道表示每个寄存器所需的最少位数是 4(16 的对数基数 2),并且由于我有两个寄存器(目标和要添加的第一个寄存器),这将占 4 + 4 位。所以 32 - 4 - 4 - 1(指令中告诉我们将立即值和第一个寄存器中的内容加在一起的位)= 23。我可以假设 ADD 指令的操作码总是有 4 位,做 23-4 得到 19 作为我的答案?

你的数学是正确的。如果您需要对单个源寄存器、目标寄存器、4 位操作码、32 位立即数与寄存器信号进行编码,您还剩下 19 位用于立即数:

32 - 4 - log_2(16) - log_2(16) - 1 = 19

不过我不确定您从哪里获得号码。 LC-3架构有8个16位寄存器,16位指令:

16 - 4 - log_2(8) - log_2(8) - 1 = 5

对于“我可以假设 ADD 指令的操作码总是有 4 位吗”,答案取决于您在说什么。无需假设,LC-3 具有固定的 4 位操作码字段。但是,当对架构进行更改时(正如您在扩大指令和寄存器文件的问题中所遇到的那样),可以对操作码编码进行更改。

不确定我们说的是同一台机器。 lc-3有8个寄存器R0,..,R7 它们是 16 位宽。内存被组织为 64k 的 16 位宽。指令为 16 位宽。 添加即时值是 ADD DR,SR,value 代码op 4bits, DR 3 位, SR 3 bits, 1bit 设置immed模式,这留下5bits作为immed value 2complement