ARM汇编语言源程序语句,一般由指令,伪操作,宏指令和伪指令作成.ARM汇编语言的设计基础是汇编伪指令,汇编伪操作和宏指令.
目前常用的ARM编译环境有2种:
ARMASM: ARM公司的IDE中使用了CodeWarrior的编译器,绝大多数windows下的开发者都在使用这一环境,完全按照ARM的规定;
GNU ARM ASM: GNU工具的ARM版本,与ARMASM略有不同;
关于CodeWarriror ARM汇编的书和文章很多,本文假定你已经完全了解ARMASM,这里只说明GNU ARM汇编,并针对ARMASM给出说明。本文翻译自:GNU ARM Assembler Quick Reference, 本人水平有限,错误难免,转载随意,请注明出处。英文原文地址不详。
GNU ARM 汇编快速入门
任何汇编行都是如下结构:
.global add @ give the symbol add external linkage
add:
ADD r0, r0, r1 @ add input arguments
MOV pc, lr @ return from subroutine
@ end of program
下面列出了一些GNU ARM汇编伪指令,并给出了相应说明。
.ascii “
.asciz “
以某种排列方式在内存中填充数值。 (该指令与armasm中的ALIGN类似)。
power_of_2表示排列方式,其值可为4,8,16或32,单位是byte;
fill_value是要填充的值;
max_padding最大的填充界限,请求填充的bytes数超过该值,将被忽略。
(和armasm中的CODE16,CODE32相同)。
.else
.endif
预编译宏(与armasm中的IF ELSE ENDIF相同)。
.endm 宏结束标志。
.exitm 宏跳出。
.macro
定义一段名为name的宏,arg_xxx为参数。
必须有对应的.endm结尾。
可以使用.exitm从中间跳出宏。(与armasm中的MACRO, MEND, MEXIT相同)。
在使用宏参数时必须这样使用:“/
[CODE].macro SHIFTLEFT a, b
.if /b < 0
MOV /a, /a, ASR #-/b
.exitm
.endif
MOV /a, /a, LSL #/b
.endm
.rept
(与armasm中的WEN相似)
.irp {,
循环执行.endr前的代码段,param依次取后面给出的值。
在循环执行的代码段中必须以“/ ”表示参数。
.endr 结束循环(与armasm中的WEND相似).
插入一个16-bit的数据队列。(与armasm中的DCW相同)
.ifndef
定义一个寄存器,.req的左边是定义的寄存器名,右边是使用的真正使用的寄存器。
(与armasm中的RN类似)
例如:acc .req r0
开始一个新的代码或数据段。.text, 代码段;.data, 初始化数据段;.bss, 未初始化数据段。
这些段都有缺省的标志(flags),联接器可以识别这些标志。(与armasm中的AREA相同)。
下面是ELF格式允许的段标志
<标志> 含义
a 允许段
w 可写段
x 执行段
分配number_of_bytes字节的数据空间,并填充其值为fill_byte,若未指定该值,缺省填充0。
(与armasm中的SPACE功能相同)
插入一个32-bit的数据队列。(与armasm中的DCD功能相同)
.text - 代码段
.const - 只读数据段(有些编译器不使用此段,将只读数据并入.data段)
.data - 读写数据段
.bss - 堆
GNU ARM汇编特殊字符和语法
整行注释符号: ‘#’
语句分离符号: ‘;’
直接操作数前缀: ‘#’ 或 ‘$’
.thumb 以thumb格式编译,同code16
.code16 以thumb格式编译
.code32 以arm格式编译
更详细的使用说明请参照:ARM Architecture Reference Manual, Addison-Wesley ISBN 0-201-73719-1
译者:
重要的部分翻译完成了,本人认为不重要的没有翻译,如force_thumb,寄存器命名等等。
上一篇:ARM的BX指令
下一篇:ARM协处理器及其指令
推荐阅读最新更新时间:2024-03-16 14:59
设计资源 培训 开发板 精华推荐
- NRL团队提出结构电池发展方向 着眼于解耦结构和高能量密度电池
- Rectifier推出首款7kW双向电动汽车充电器 可实现V2G技术
- 英国利用时间信息构建3D图像 可帮助研发汽车的360度感知能力
- Horiba开发激光雷达测试系统 使客户满足自动驾驶功能许可要求
- 科学家研发出锂金属电池保护薄层 可提高电池效率并允许冷充电
- 松下与日产合作研发电子后视镜 可增强夜间能见度/减少盲点
- 纬湃科技为东风乘用车提供集成式电动轴驱系统 轻便紧凑
- Dialog推出最新大电流DC-DC降压转换器系列,扩充汽车级PMIC产品组合
- 艾迈斯半导体与Ibeo携手将固态LiDAR技术推向汽车市场取得重大进展
- “你是我的眼”——激光雷达主动三维成像系统