问题描述
遇到以下m68k指令(所有数字均为十六进制)时,我正在解决Reko decompiler中的崩溃问题:
C234 9786 2C02
Reko尝试将其分解为(使用Motorola语法):
and.b ([],a1.w*8,+2C02),d1
(请注意,[]
是基址寄存器应该存放的位置,这显然是错误的)。指令字来自未对齐的反汇编,因此它们不会出现在“真实的”执行流中,但是我希望Reko的反汇编器更强大,并且在遇到无效指令时不会崩溃。
我有m68k系列的《摩托罗拉'程序员参考手册》,我正在用它来解码指令9786
的扩展字。 8
的高位表示这是一个完整的扩展字(第2-2页),其余位为:
D/A | 1 = A
Register | 0b001 = A1
W/L | 0 = w
Scale | 0b11 = 8 ; this results in the a1.w*8
BS | 1 = base register suppressed
IS | 0 = index register not suppressed.
BD size | 0b00 = "Reserved"
IIS | 0b110 = Indexed postindexed with word outer displacement
鉴于字段BD size
(基本位移大小)为0b00
,而手册指出其为“保留”,是否意味着整个指令格式不正确,并应报告为无效?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)