m68k全扩展字中的“保留”值是否表示指令无效?

问题描述

遇到以下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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...