【问题标题】:How many bits for this op-code?这个操作码有多少位?
【发布时间】:2016-12-30 17:14:13
【问题描述】:

PC 内存模块包含 512k 字。字有 64 位。二进制指令有四段:间接位、操作码、确定32个寄存器之一的寄存器代码部分和地址部分。指令二进制代码存储在字存储器中。

  1. 操作码、寄存器码和地址段需要多少位?

间接:1 位

注册:5 (2^5 = 32)

地址:19 (2^19 = 512k)

操作码 = 64 - 5 - 19 = 40 位

我认为我的答案是正确的,但实际上操作码不能有 40 位。 (那是万亿条指令)。 40 对吗?

【问题讨论】:

    标签: cpu-architecture


    【解决方案1】:

    你的答案是正确的,只是你忘了减去间接位,总共 64 - 5 - 19 - 1 = 39。

    并非所有 39 位都需要成为操作码的一部分。
    一般来说,操作码字段的位数是根据操作码的数量计算的,没有给出。

    这 39 位可以使用或保留以供将来使用。
    例如,可以使用 3 位来指定每个字中的一个字节(从而扩展地址位)。
    另外 19 位可用于指定第二个地址等。

    【讨论】:

    • 非常感谢您,由于我没有足够的声誉,我无法支持您的回答。我可以澄清一些小事。 “PC内存模块包含512k字。字有64位”实际上是什么意思?据我了解,具有 64 位的单词意味着该单词是 8 个字节(64/8)。总内存大小是4MB? (512k * 8 字节字)?再次感谢。
    • @Trang,不客气。是的。内存是用字来寻址的,最知名的架构使用 8 位字,所以有时人们会混淆字与字节。前几天我回复了question about memory size,也许可以帮到你。
    • 你好,还有一个问题。这些句子的意思是一样的吗? “字有 64 位”与“字是 64 位”。我假设“字有 64 位”意味着字大小是“8 字节”,而“字是 64 位”意味着这个字可以容纳 2^64 的值?原因是当我看到n位长时,我们经常计算2^n。啊!
    • @Trang 他们的意思是一样的。字长以位为单位给出,因为 1) 它可能不是 8 的倍数(例如 14 位) 2) 字节并不意味着到处都是 8 位。一个 64 位的字不能容纳 2^64,最多 2^64 - 1。如果 n 是位数,则使用通常的二进制格式可表示的最大数是 2^n - 1。数量 2^n 是数字的数量,即可表示的不同值的数量。例如,对于 2 位,我们有 00、01、10、11。最大数字是 3 (11) = 2^2 - 1。数字的数量是 4 = 2^2。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2011-05-14
    相关资源
    最近更新 更多