首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在ARM汇编中,BL指令正确地将我链接回初始例程,但显示的地址总是错误的

在ARM汇编中,BL指令用于进行分支跳转,并将返回地址保存在链接寄存器LR中。当BL指令正确地将我们链接回初始例程时,显示的地址总是错误的可能有以下几个原因:

  1. 代码逻辑错误:BL指令可能被错误地放置在了错误的位置,导致跳转到了错误的地址。检查代码逻辑,确保BL指令正确地放置在需要跳转的位置。
  2. 链接错误:BL指令链接回初始例程时,可能由于链接错误导致显示的地址错误。检查链接过程,确保正确地链接到初始例程。
  3. 地址计算错误:BL指令跳转的地址是相对于当前指令的偏移量。如果计算偏移量时出现错误,就会导致显示的地址错误。检查地址计算过程,确保偏移量计算正确。
  4. 初始例程错误:初始例程本身可能存在错误,导致显示的地址错误。检查初始例程的代码,确保其正确地处理返回地址。

总之,在ARM汇编中,BL指令正确地将我们链接回初始例程时,显示的地址总是错误的可能是由于代码逻辑错误、链接错误、地址计算错误或初始例程错误所导致的。需要仔细检查代码和链接过程,确保每个步骤都正确无误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS逆向之ARM64汇编基础

我们知道,目前为止Apple的所有iOS设备都采用的是ARM处理器。ARM处理器的特点是体积小、低功耗、低成本、高性能,所以很多手机处理器都基于ARM,ARM在嵌入式系统中也具有广泛的应用。 ARM处理器的指令集对应的就是ARM指令集。armv6|armv7|armv7s|arm64都是ARM处理器的指令集,这些指令集都是向下兼容的,例如arm64指令集兼容armv7,只是使用armv7的时候无法发挥出其性能,无法使用arm64的新特性,从而会导致程序执行效率没那么高。在iPhone5s及其之后的iOS设备指令集都是ARM64。 还有两个我们也很熟悉的指令集:i386和x86_64是Mac处理器的指令集,i386是针对intel通用微处理器32架构的。x86_64是针对x86架构的64位处理器。所以当使用iOS模拟器的时候会遇到i386|x86_64,因为iOS模拟器没有ARM指令集。

03
领券