我目前正致力于在 Ghidra 中反转一些 Sparc 代码,并且计算出的寄存器值显示不正确。这是该行在列表中的外观:
add o3, o0=>DAT_00007d88, o0
我希望它看起来像这样:
add o3, o0, o0=>DAT_00007d88
这是因为 Sparc 反汇编将目标操作数作为列出的最后一个寄存器。指令信息看起来像这样,计算出的地址总是绑定到寄存器的第一个实例。
我目前正在使用语言规范的副本,因此如果需要解决此问题,修改 pspec 或 cspec 没有问题。这里的指令只是一个例子,但这个问题在整个指令集中是通用的。
编辑更大的代码片段:
ram:00004d4c 17 04 b4 14 sethi %hi(0x12d05000), o3
ram:00004d50 96 12 e0 e8 or o3, 0xe8, o3
ram:00004d54 11 3b 4c 0b sethi %hi(0xed302c00), o0
ram:00004d58 90 12 20 a0 or o0, 0xa0, o0
ram:00004d5c 90 02 c0 08 add o3, o0=>DAT_00007d88, o0
