免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2691 | 回复: 7
打印 上一主题 下一主题

Gnu arm 汇编求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-26 16:59 |只看该作者 |倒序浏览
我最近刚学GNU arm 汇编, 但是遇到了很多问题,这个很难缠,麻烦大虾们帮助:
我写了一个程序叫test.s
.section .text
.globl _start
_start:
   mov r0, #1
   mov r1, #2
   add r2, r0, r1

exit:
   swi 0x11

使用
arm-linux-as -o test.o test.s
arm-linux-ld -o test test.o
生成test可执行文件,但是放在目标板里运行却报告illegal instruction ,我感觉没有指令错,况且指令也不多
,请大虾们指教这是什么原因?谢谢

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2009-02-26 17:11 |只看该作者
环境都不说,我们怎么帮你?
什么叫作放进目标板?具体说清楚.
“放进目标板”,在我的认为里可是有无数种意思

论坛徽章:
0
3 [报告]
发表于 2009-02-26 17:35 |只看该作者
不好意思,是这样的,我的开发主机是FC6,使用的交叉编译器是arm-linux-gcc-3.4.1,使用的是GNU arm汇编语法,开发板子使用的是linux 2.6.17的内核,处理器是at91rm9200含有arm920t的核
当板子引导启动起来,操作系统内核也工作了之后我把编译好的程序放到sdram中运行,执行中报告illegal instruction错,我猜测是swi软中断引起的,但是又不知道为什么

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2009-02-27 00:39 |只看该作者
明白你的意思了,你是在调用exit系统调用是吧?
"把编译好的程序放到sdram中运行",是怎么放进去的?
ramdisk?

论坛徽章:
0
5 [报告]
发表于 2009-02-27 09:01 |只看该作者
对,板子跑起来,ramdisk挂载了之后,放进去了,我觉得可能是调用SWI指令出的问题,但是不调用它,又无法调用exit系统调用,现在不知道该怎么办了!

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2009-02-27 09:26 |只看该作者

  1. #include <errno.h>
  2. #include <linux/unistd.h>
  3. _syscall1(void,exit,int,i);
  4. int main()
  5. {
  6.       exit(1);
  7. }
复制代码

把这个编译出来对比一下

论坛徽章:
0
7 [报告]
发表于 2009-02-27 15:34 |只看该作者
问题已经解决,原来我的ABI是OABI,SWI调用方式必须是swi(0x900000+ num)
多亏了大家的帮助,谢版主的妙招,给与我极大的帮助对了,通过使用
#include<linux/unistd.h>
#include<error.h>
_syscall1(void,exit,int,i);
int main()
{
   exit(1);
}

命名为test.c
然后使用
arm-linux-gcc.3.4.1中的arm-linux-gcc -S test.c -o test.s
我发现里边退出程序的代码段中有一句
swi(0x900000+ 1)
再对比OABI的介绍,我发现我的编译器使用的是OABI,当我把程序改成
swi(0x900000+ 1)时,运行可以通过了
再次谢谢大家的热心帮助!

论坛徽章:
0
8 [报告]
发表于 2009-03-02 21:02 |只看该作者
版主就是版主,当然不一样啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP