如何解决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 举报,一经查实,本站将立刻删除。