-
-
[求助]Android5.0中Arm指令中对于类方法的调用的实际跳转地址的计算方法
-
发表于: 2016-7-8 08:43 4279
-
在Android5,0及其以上的版本,系统会通过dex2oat将应用编译为ARM机器指令来提高执行速度。
而对于ARM指令,我想请问一下对一个类的方法是如何获取他的实际跳转地址的呢?
例如调用telephonymanager.getdeviceid(),其对应的dex code为
iget-object telephonymanager; invoke telephonymanager.getdeviceid.
其实际的跳转地址在我的写的应用中的 获取过程为 :
[r1,#16]->r5,
r5->r1
[r1,#0]->r0
[r0,#572]->r0
[r0,#40]->lr
blx lr
所以我想请问一下这一段获取其实际跳转的地址的具体意义,其中这些数值 如16 572等是如何计算出来的,例如40就是指entry的偏移,但是其他的这些事怎么计算出来的 麻烦大家帮忙解释一下,如果给一份学习资料也是挺好的,因为我现在找到的所有关于arm调用的资料都是 函数的调用,而对这种类的方法的调用所讲的比较少。
而对于ARM指令,我想请问一下对一个类的方法是如何获取他的实际跳转地址的呢?
例如调用telephonymanager.getdeviceid(),其对应的dex code为
iget-object telephonymanager; invoke telephonymanager.getdeviceid.
其实际的跳转地址在我的写的应用中的 获取过程为 :
[r1,#16]->r5,
r5->r1
[r1,#0]->r0
[r0,#572]->r0
[r0,#40]->lr
blx lr
所以我想请问一下这一段获取其实际跳转的地址的具体意义,其中这些数值 如16 572等是如何计算出来的,例如40就是指entry的偏移,但是其他的这些事怎么计算出来的 麻烦大家帮忙解释一下,如果给一份学习资料也是挺好的,因为我现在找到的所有关于arm调用的资料都是 函数的调用,而对这种类的方法的调用所讲的比较少。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
看原图
赞赏
雪币:
留言: