微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如果 LC3 中有 16 个寄存器,有多少位可用于立即数

LC-3 有 16 个寄存器,每个寄存器长 64 位,指令为 32 位。对于 ADD 指令的立即数,有多少位可用?我知道表示每个寄存器所需的最小位数是 4(以 16 为底的对数基数),并且由于我有两个寄存器(目标和第一个添加的寄存器),因此占 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 代码操作 4 位, DR 3 位, SR 3 位,1 位设置即时模式,这留 5 位为即时值 2 补

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。