指令的最大总数是多少?

What is the maximum total number of instructions?

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

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

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

你可能是这样看的。我假设我们将使用 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 类指令)。