确定可寻址性,指令大小,操作码大小。 (LC-3)

时间:2015-09-02 00:08:49

标签: assembly systems-programming lc3

因此,在本课程中,我们使用LC-3汇编语言进行了大量处理。对于我们的一项家庭作业的问题,我们得到了这个:

“假设我们有16个通用寄存器,60个操作码,20位指令大小和64K字节可用内存空间。 a)如果我们想要一个LD DR,偏移指令,有多少位可用于偏移?“

我怎么去发现这个?在课堂上,我们使用LC-3,我已经知道它具有16位的指令大小,其中操作码是4位,存储器位置是3位(R0-R7),并且可以计算出偏移量。我们从未学过如何自己计算这些......所以我不知道如何弄清楚指令的操作码在这种语言中有多长,指令大小为20位,甚至多少位记忆位置是。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

  

“假设我们有16个通用寄存器,60个操作码,20位指令大小和64K字节可用内存空间.a)如果我们想要一个LD DR,偏移指令,有多少位可用于偏移?“
  我该如何找到这个?

让我们分解一下:

LDR    DR,    offset
^      ^      
|      general-purpose register
opcode

问题是有60种可能的操作码,因此您需要ceil(log2(60)) == 6位才能编码所有可能的操作码。
然后它说有16个GPR,你需要ceil(log2(16)) == 4位才能编码使用其中任何一个。

在使用了6 + 4 == 10位的操作码和GPR后,剩下的10位用于编码其他任何内容。在这种特殊情况下,“其他任何东西”似乎只是偏移量,所以你有10位可用于偏移。