【问题标题】:Decoding muli-length opcodes (SPU ISA)解码多长度操作码 (SPU ISA)
【发布时间】:2019-04-08 01:35:09
【问题描述】:

我从我实现的汇编程序中生成了一个十六进制的 32 位指令转储。指令转储的一个子集如下所示:

指令的操作码长度为 4、7、8、9 和 11。它们始终是指令中的第一位。如果操作码的长度不同,我无法理解如何解码指令?

例如:当我读取一条指令时,我怎么知道我应该为操作码读取多少位?

这是指令格式的图像:

谢谢

【问题讨论】:

  • 我们怎么知道?我假设操作码中有逻辑,否则没有处理器可以解码它们。也许如果他的前 3 位是 111,长度是 7,依此类推。但是以您提供的信息,不可能给您任何建议。
  • 指令中的其余字段都是操作数或立即数。指令中除了操作码之外没有其他信息。我已经添加了说明格式的图片。
  • 你必须看指令说明。例如,通过快速扫描索尼文档,我注意到所有 10 位操作码指令都以 001 开头。其他指令可能有类似的逻辑。
  • 是的,我试图找到这样的模式。由于最小的操作码是 4 位,所以每条指令的前 4 位内必须有一个模式;但没有(我可以看到)。一些指令(具有不同的操作码长度)具有相同的前 4 位。
  • 这里一个逻辑。否则处理器无法解码指令。尝试找到可以确定图案大小的最小图案长度并使用查找表。

标签: cpu-architecture dump opcode hexdump spu


【解决方案1】:

我想通了。 我读取了所有指令的最大操作码位数 (11),并忽略了没有意义的位(即不会导致可能的操作码的位)。

【讨论】:

    猜你喜欢
    • 2019-07-18
    • 2013-07-26
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多