我正在玩coldfire反汇编程序并找出这段代码:
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的需求。对我而言,它只会跳起来。
答案 0 :(得分:1)
根据手册,bsr.l *+2
有十六进制代码$61FF $0000 $0000
,因此很可能是由于Igor Skochinsky在上面提到过,使用未解析的重定位来解除目标代码的结果。
答案 1 :(得分:0)
我认为这些可能是针对更紧凑代码的编译器优化的结果。请参阅"短BRA优化"在编译器指南中。
最近的IDA版本为HC08和HC12代码反汇编skip2
这些分支(还有skip1
)。我之前没有在ColdFire代码中看到过这样的优化。
编辑:或者它可能只是一个具有未解析重定位的目标文件。