简体   繁体   English

此bsr.l指令有什么作用?

[英]What does this bsr.l instruction do?

I'm playing with coldfire disassembler and find out this piece of code: 我正在玩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)

I'm trying to figure out what is the need for those bsr.l. 我正在尝试找出对这些bsr.l的需求。 For me it is only jumping itself. 对我来说,这只是跳跃本身。

根据手册, bsr.l *+2十六进制代码$61FF $0000 $0000 ,所以很可能是由于Igor Skochinsky在上面提到的未解析重定位而使对象代码失效。

I think these might be the result of a compiler optimization for more compact code. 我认为这些可能是编译器针对更紧凑的代码进行优化的结果。 See "Short BRA Optimization" in the compiler guide. 请参阅编译器指南中的“短BRA优化”。

Recent IDA versions disassemble such branches as skip2 (there is also skip1 ) for HC08 and HC12 code. 最新的IDA版本反汇编了HC08和HC12代码的分支,例如skip2 (也存在skip1 )。 I haven't seen such optimization in ColdFire code before. 我以前从未在ColdFire代码中看到过这种优化。

EDIT: or it could be just an object file with unresolved relocations. 编辑:或者它可能只是一个具有未解决的重定位的目标文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM