【问题标题】:What is the maximum total number of instructions?指令的最大总数是多少?
【发布时间】:2021-09-22 02:32:50
【问题描述】:

我得到了三种类型的指令,类型 A、B、C,分别有 4、7、8 位操作码。如果所有三种类型的指令都存在,那么最大指令总数是多少?这个问题的答案是总共 240 条指令。

但是,我只能通过给 A 型的操作码 0000 并给 B 型的前四位 0001 来获得最多 233 条指令,而剩下的 4 位组合给 C 型。总数为 1 (A 类) + 2^3 (B 类) + (2^4 - 2)(2^4) (C 类) = 233 条指令。

澄清一下,2^3 是从 Type B 的剩余 3 位推导出来的。而 2^4 是 Type C 的剩余 4 位。

【问题讨论】:

    标签: computer-science combinatorics


    【解决方案1】:

    你可能会这样看。我假设我们将使用 8 位。 如果只有 C 类指令,则最大指令数为 256 (2^8)。

    现在假设您也只有一条 B 类指令。它需要 7 位进行编码,其余位用作某种参数字段。所以我们还有一条指令,但我们必须减去 2 条 C 类指令(这两条指令与唯一的 B 指令具有相同的 7 位)。所以现在我们有 255 条指令(254 条 C 类和 1 条 B 类)

    我们现在重复这个过程,只添加一条 A 类指令。它需要 4 位进行编码,其余 4 位用作某种参数字段。要添加这条指令,我们必须“牺牲” 16 条 C 类指令(其余 4 位的所有组合)。所以现在我们有 240 条指令(238 条 C 型、1 条 B 型和 1 条 A 型)。

    【讨论】:

    • 只是跟进,我们可以将sacrifice 推广到 2^(max opcode size - opcode size)
    • 根据您问题中给出的上下文,是的。
    • 因此,如果我们想要有 1 条具有 7 位操作码的指令,则必须牺牲 2^(8-7)=2 条具有 8 位操作码的指令。另一方面,如果我们想要 1 条具有 1 位操作码的指令,则必须牺牲一半的组合,2^(8-1)=2^7=128 条具有 8 位操作码的指令
    猜你喜欢
    • 1970-01-01
    • 2020-04-30
    • 2014-11-19
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多