0

我正在玩冷火反汇编程序并找出这段代码:

loc_F7E:
    bsr.l loc_F7E+2
    lea 12(sp),sp
    pea (284).w
    clr.l -(sp)
    move.l  a6,d0
    addi.l  #-636,d0
    move.l  d0,-(sp)

loc_F98:
    bsr.l loc_F98+2
    lea $C(sp),sp
    pea (284).w
    clr.l -(sp)
    move.l  a6,d0
    addi.l  #-$398,d0
    move.l  d0,-(sp)

我试图弄清楚那些 bsr.l 的需求是什么。对我来说,它只是跳跃本身。

4

2 回答 2

1

根据手册,bsr.l *+2有 hex code $61FF $0000 $0000,所以它很可能是因为 Igor Skochinsky 上面提到的那样,使用未解决的重定位来取消目标代码的结果。

于 2014-11-14T12:16:55.827 回答
0

我认为这些可能是编译器优化更紧凑代码的结果。请参阅编译器指南中的“短 BRA 优化”。

最近的 IDA 版本反汇编了 HC08 和 HC12 代码等分支skip2(也有skip1)。我以前没有在 ColdFire 代码中看到过这样的优化。

编辑:或者它可能只是一个具有未解决重定位的目标文件。

于 2014-11-13T12:04:37.103 回答