更新3:我了解到,做到这一点的一种方法是简单地定义一个新的处理器,将现有的68k反汇编程序移植到IDA SDK应该相当简单。就我而言,这仍然太麻烦了,因为我只有一个需要分析的68k项目。如果免费更新期已过,并且更新的IDA许可证太差,该解决方案将与较旧的IDA版本一起使用。我仍然想知道较旧的IDA(6.1)的最佳解决方法是什么。

更新:我发现IDA的更高版本(例如6.8)(我无法访问)具有机器.cfg文件中的“ mapaddr”命令。不知道mapaddr到底是做什么的,它可以多地图地址吗?

原始帖子: / m68k-ida-pro-24-bit-addressing / 38314561用户遇到了与我类似的问题,但从未解决。

许多68000系统的64kb RAM映射为两个32kb段, FF8000-FFFFFF和0-7FFF,因此您可以使用字寻址更快地到达整个RAM,因为分支偏移为15位+符号。

我把代码转储分成了两段,但实际上并没有用,因为Motorola 68k有点精神分裂解决。是16位,24位还是32位?它真的是一次全部。 >这应将FFFF8234的双字移动到d0。我希望IDA理解$ 8234与$ ffff8234是相同的,并使用符号等。我将它们更改为引用FFxxxx空间的手动操作数。

但是,尽管那让我(通过单击它们)检查引用,但IDA并不真正了解寻址的工作原理,这意味着我从环境中获得的其他帮助很少,并且子例程和调用未正确检测。

编辑:对于非68k的家伙,movea和lea只是移动指令,可以将内容放入地址寄存器,(几乎)所有寻址与地址寄存器a0-a7一起。

评论

hex-rays.com/products/ida/6.9 BUGFIX:mc68k:mc68000,mc68010,cpu32的地址总线宽度减少到24位

@IgorSkochinsky谢谢!您应该做出回答,除非有人提出一些聪明的解决方法,否则我会接受的。

@IgorSkochinsky顺便说一句,我无法在线找到有关“ mapaddr”的文档。它有什么作用?我看到它在Tricore定义中使用。

@IgorSkochinsky问题未正确解决。在6.95 IDA中,一些跳跃变得无法识别(请与我联系以PM,然后向我发送示例)。而mapaddr只是在Tricore内部使用的。

@ Dr.MefistO请发送报告给支持,谢谢。

#1 楼

IDA 6.9中添加了对68k的24位地址空间的支持:https://www.hex-rays.com/products/ida/6.9/


BUGFIX:mc68k: mc68000,mc68010,cpu32的地址总线宽度减少到24位