首页
社区
课程
招聘
[求助]好了我来问一下arm汇编的事情
发表于: 2021-5-16 01:01 4022

[求助]好了我来问一下arm汇编的事情

2021-5-16 01:01
4022


这里汇编导入了一个c函数
extern "C" JNIEXPORT int32_t JNICALL mod_for_asm(int32_t num, int32_t mod)

 

然后掉这个函数的时候使用blx mod_for_asm就会异常,但是bl就可以调用...

 

使用
ldr r2,=mod_for_asm
blx r2
会编译错误,具体错误如下
warning: shared library text segment is not shareable
error: treating warnings as errors
百度查了一下,是因为安卓高版本禁止重定位

 

现在问题来了

 

这是什么问题??
阿巴 阿巴

 

顺便伸手安卓方面的arm汇编资料


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 6
活跃值: (1282)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
另外调用约定还是比较迷糊
调用者恢复堆栈,保存使用的寄存器,
被调用者保护fp寄存器??
2021-5-16 01:12
0
雪    币: 6
活跃值: (1282)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
1
2021-5-16 14:12
0
雪    币: 271
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
blx是跳转到thumb指令,保存和恢复都是由被调用的函数的做的吧
2021-5-16 21:32
0
雪    币: 6
活跃值: (1282)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
Anhanguera blx是跳转到thumb指令,保存和恢复都是由被调用的函数的做的吧
我看反汇编好像只有fp寄存器被调用者保存并恢复了,参数的栈是调用者恢复。。。
2021-5-16 22:22
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
为啥都能 bl mod_for_asm
为何不直接 blx mod_for_asm呢
偏要拿r2寄存器中转一下 会不会是r2中转的操作出了问题
2021-5-17 10:23
0
雪    币: 6
活跃值: (1282)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
万里星河 为啥都能 bl mod_for_asm 为何不直接 blx mod_for_asm呢 偏要拿r2寄存器中转一下 会不会是r2中转的操作出了问题
blx mod_for_asm会报错 异常
2021-5-17 21:35
0
游客
登录 | 注册 方可回帖
返回
//