请教:arm-linux下用汇编写调用c库的应用程序出现段错误
时间:2011-01-17
来源:互联网
写了一个简单的hello world程序,调用printf函数,用arm-linux-gcc编译通过,可运行提示段错误,调了很久未果,请高手指点一二,非常感谢!
如果改为用swi #0x900004(sys_write)代替printf,则正常输出
.extern printf
.globl main
.section text
main:
.align 2
ldr r0,=str
bl printf
swi #0x900001 @ sys_exit
.align 2
str:
.asciz "hello world!"
.end
如果改为用swi #0x900004(sys_write)代替printf,则正常输出
.extern printf
.globl main
.section text
main:
.align 2
ldr r0,=str
bl printf
swi #0x900001 @ sys_exit
.align 2
str:
.asciz "hello world!"
.end
作者: ukyo111 发布时间: 2011-01-17
本帖最后由 mekinglong 于 2011-01-17 13:30 编辑
猜测是库的问题,
不过最好还是把错误贴出来,那样更好找出问题!
猜测是库的问题,
不过最好还是把错误贴出来,那样更好找出问题!
作者: mekinglong 发布时间: 2011-01-17
错误就是Segmentation fault。查了一下,printf的参数传递好像是通过栈,因此把代码改为:
.extern printf
.globl main
.section text
main:
.align 4
ldr r0, =str
str r0, [sp,#-4]!
bl printf
swi #0x900001 @ sys_exit
.align 4
str:
.asciz "hello world!"
.end
可还是Segmentation fault,怀疑是不符合APCS标准
.extern printf
.globl main
.section text
main:
.align 4
ldr r0, =str
str r0, [sp,#-4]!
bl printf
swi #0x900001 @ sys_exit
.align 4
str:
.asciz "hello world!"
.end
可还是Segmentation fault,怀疑是不符合APCS标准
作者: ukyo111 发布时间: 2011-01-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28