我正在尝试解决这个问题:
您将为具有32个寄存器(R0-R31)的处理器编码指令集。 算术逻辑指令采用以下形式:
Ri<-Rj op Rk
并且有22位可用于编码。
阅读 - 写作说明的形式如下:
Ri<-memory[Rj+offset] (i,j = 0...31)
Ri->memory[Rj+offset] (i,j = 0...31)
并且有30位可用于编码。
i)您可以编码多少个算术逻辑指令? ii)以位为单位计算偏移量的最大长度。
我试图找到解决方案,搜索了几个小时但没有找到任何东西。任何帮助都会很棒!
答案 0 :(得分:1)
如果您的ISA中有32个寄存器,那么您就知道每个寄存器指定符占用多少空间(每个5位)。剩余的剩余位可用于指定特定类型的指令(“操作码”)和立即(“偏移”,在ld / st指令的情况下)。
寄存器/寄存器指令需要3个说明符,因此它是15位。其余的位都可以指定指令的类型。