如果您希望您的操作码具有不同的长度,那么您必须确保没有较短的操作码是较长操作码的子串.也就是说,如果您有两位操作码01和一个三位操作码010,那么您的解码器将如何区分它?
我假设您正在尝试将操作码和操作数拟合为单个8位数量并将其视为记录.因此,例如,您可能具有01000111前两位是操作码的指令,接下来的三位是第一个操作数,后三位是第二个操作数.
如果你有两个操作码,01并且010,请问你的解码器这两种解释之间做出选择?
01 000 111 - opcode 01, two three-bit arguments
010 00 111 - opcode 010, a two-bit argument, and a three-bit argument
Run Code Online (Sandbox Code Playgroud)
如果您确实需要不同长度的操作码,则需要为较长的操作码保留前缀字符串.所以,你可以有两个位指令00,01以及10和所有长指令开始11.