arm汇编程序如何编译

alexlee_1 2011-09-30 10:41:02
写了一个简单的ARM汇编程序
AREA AddReg COD ,READONLY
ENTRY
main
ADR r0,ThumbProg + 1
BX r0

CODE16
ThumbProg
MOV r2,#2
MOV r3,#3
ADD r2,r2,r3
ADR r0,ARMProg
BX r0

CODE32
ARMProg
MOV r4,#4
MOV r5,#5
ADD r4,r4,r5

stop
MOV r0,#0x18
LDR r1,=0x20026
SWI 0X123456
END
然后编译:dell@ubuntu:~$ arm-linux-gcc area.s
area.s: Assembler messages:
area.s:1: Error: bad instruction `area AddReg COD,READONLY'
area.s:2: Error: bad instruction `entry'
area.s:3: Error: bad instruction `main'
area.s:7: Error: bad instruction `code16'
area.s:8: Error: bad instruction `thumbprog'
area.s:15: Error: bad instruction `code32'
area.s:16: Error: bad instruction `armprog'
area.s:21: Error: bad instruction `stop'
area.s:25: Error: bad instruction `end '
为什么会有这种错误,是不是不可以直接在LINUX下编译?(arm-linux-gcc及库已经安装。)
是不是我的编译过程有错?恳请指交。。。
...全文
773 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
little_fei7545 2011-10-08
  • 打赏
  • 举报
回复
用masm for windows 集成环境进行编译啊
guoke25 2011-10-01
  • 打赏
  • 举报
回复
另外我的文件名是asmtest.s,用的编译选项是:
arm-linux-gcc -g -c -o asmtest.o asmtest.s
guoke25 2011-10-01
  • 打赏
  • 举报
回复 1

.text
.global _start
_start:
main:
ADR r0,ThumbProg + 1
BX r0

.CODE[16]
ThumbProg:
MOV r2,#2
MOV r3,#3
ADD r2,r2,r3
ADR r0,ARMProg
BX r0

.CODE[32]
ARMProg:
MOV r4,#4
MOV r5,#5
ADD r4,r4,r5

stop:
MOV r0,#0x18
LDR r1,=0x20026
SWI 0X123456


但是在linux下面则要做更多的修改,改成如上的代码即可通过编译。
具体的格式要求请参考GNU+Assembler文档
guoke25 2011-10-01
  • 打赏
  • 举报
回复

AREA AddReg,CODE ,READONLY
ENTRY
main
ADR r0,ThumbProg + 1
BX r0

CODE16
ThumbProg
MOV r2,#2
MOV r3,#3
ADD r2,r2,r3
ADR r0,ARMProg
BX r0

CODE32
ARMProg
MOV r4,#4
MOV r5,#5
ADD r4,r4,r5

stop
MOV r0,#0x18
LDR r1,=0x20026
SWI 0X123456
END

在linux下面和ads上面的汇编程序格式是不一样的。你的汇编格式经过修改以后就可以在ads上编译成功了。
主要做了几个改动:
1、AddReg后面加了个逗号,COD改为CODE
2、标号顶格,代码不顶格
做了这两个修改以后就可以编译成功了
alexlee_1 2011-09-30
  • 打赏
  • 举报
回复
听说linux下的ARM汇编程序与ADS中的不是一样的??求解...应该怎么写呢??大神。。。
「已注销」 2011-09-30
  • 打赏
  • 举报
回复
gcc没用,一直用的ads,因为复杂的程序也没弄过。。。后来就放弃嵌入式了
「已注销」 2011-09-30
  • 打赏
  • 举报
回复
用ADS或者ARM-gcc

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧