如何反汇编这些指令
How to disassemble these instructions
我正在使用 riscv-spec-v2.0 编写一个小反汇编程序,对以下说明以及如何正确反汇编它们有一些疑问:
1。
FENCE 指令在 imm
中有 "pred" 和 "succ" 位字段
2。
AMO 指令在 funct7
中有 "aq" 和 "rl" 位
3。
浮点指令在 funct3
中有一个 "rm" 位域
所有这些位域似乎都缺少汇编器中的映射。
例如。第 50 页只是说 "FENCE" 但没有说明如何处理中间体。
或者第 33 页有一个示例,将 .aq 或 .rl 放在末尾,但如果两者都存在,则没有做什么。
4。
SCALL、SBREAK 与 ECALL、EBREAK 相同
但还有 ERET:那么为什么不删除 SCALL 和 SBREAK
并且只使用 ECALL、EBREAK 和 ERET,因为其他方面
很难反汇编这些操作码。
当前的 RISC-V 汇编器对于常见的默认值是简洁的:
"FENCE" 没有参数被视为完整的栅栏(所有位设置)
可以在同一条指令上同时进行
如果未指定则不显示舍入模式
ECALL 和 EBREAK 将成为新的标准名称(将在修订后的用户 ISA 手册中阐明)
我正在使用 riscv-spec-v2.0 编写一个小反汇编程序,对以下说明以及如何正确反汇编它们有一些疑问:
1。 FENCE 指令在 imm
中有 "pred" 和 "succ" 位字段2。 AMO 指令在 funct7
中有 "aq" 和 "rl" 位3。 浮点指令在 funct3
中有一个 "rm" 位域所有这些位域似乎都缺少汇编器中的映射。 例如。第 50 页只是说 "FENCE" 但没有说明如何处理中间体。 或者第 33 页有一个示例,将 .aq 或 .rl 放在末尾,但如果两者都存在,则没有做什么。
4。 SCALL、SBREAK 与 ECALL、EBREAK 相同 但还有 ERET:那么为什么不删除 SCALL 和 SBREAK 并且只使用 ECALL、EBREAK 和 ERET,因为其他方面 很难反汇编这些操作码。
当前的 RISC-V 汇编器对于常见的默认值是简洁的:
"FENCE" 没有参数被视为完整的栅栏(所有位设置)
可以在同一条指令上同时进行
如果未指定则不显示舍入模式
ECALL 和 EBREAK 将成为新的标准名称(将在修订后的用户 ISA 手册中阐明)