【问题标题】:How many bits will be available for the immediate value if there are 16 registers in the LC3如果 LC3 中有 16 个寄存器,有多少位可用于立即值
【发布时间】:2021-06-13 09:49:46
【问题描述】:
LC-3 有 16 个寄存器,每个 64 位长,32 位指令。对于 ADD 指令的立即数,有多少位可用?我知道表示每个寄存器所需的最小位数是 4(16 的对数基数 2),并且由于我有两个寄存器(要添加的目标和第一个寄存器),这将占 4 + 4 位。所以 32 - 4 - 4 - 1(指令中告诉我们将立即数和第一个寄存器中的内容相加的位)= 23。我可以假设 ADD 指令的操作码总是有 4 位吗?并执行 23-4 得到 19 作为我的答案?
【问题讨论】:
标签:
assembly
computer-science
cpu-architecture
lc3
【解决方案1】:
你的数学是正确的。如果您需要在 32 位上编码单个源寄存器、目标寄存器、4 位操作码、立即数与寄存器信号,那么您还有 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 位操作码字段。但是,当对架构进行更改时(正如您对扩大的指令和寄存器文件提出的问题),可能会对操作码编码进行更改。
【解决方案2】:
不确定我们说的是同一台机器。 lc-3 有 8 个寄存器 R0,..,R7
它们是 16 位宽。内存组织为 64k 的 16 位宽。指令为 16 位宽。
与 immed 值相加是 ADD DR,SR,value
代码操作 4 位,
DR 3 位,
SR 3 位,1 位设置 immed 模式,这留下 5 位为 immed 值 2complement