Linux Arm GNU Compiler 语法小结

以下分析及总结结果并未进行运行确认。

 

任何汇编行都是如下结构:
[:] [} @ comment
[:] [} @ 注释
Linux ARM 汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。

标号只能由a~z,A~Z,0~9,“.”,_等字符组成。当标号为0~9的数字时为局部标号,局部标号可以重复出现,使用方法如下:
  标号f: 在引用的地方向前的标号
  标号b: 在引用的地方向后的标号

.section伪操作
用户可以通过.section伪操作来自定义一个段,格式如下:
.section section_name [, "flags"[, %type[,flag_specific_arguments]]]
每一个段以段名为开始, 以下一个段名或者文件结尾为结束。这些段都有缺省的标志(flags),连接器可以识别这些标志。(与armasm中的AREA相同)。
下面是ELF格式允许的段标志
含义
a 允许段
w 可写段
x 执行段

Linux汇编程序中的宏定义
格式如下:
.macro 宏名 参数名列表 @伪指令.macro定义一个宏
    宏体
.endm   @.endm表示宏结束
如果宏使用参数,那么在宏体中使用该参数时添加前缀“/”。宏定义时的参数还可以使用默认值。
可以使用.exitm伪指令来退出宏。

 

寄存器规范:

r0,r1,r2,r3  四个寄存器在函数调用时不保证保存,需要程序员在调用前进行保存。因为这四个寄存器将被用于函数调用的前四个参数(32bits,如果64bits则会占用两个)保存。函数调用返回时会暂存使用。
r4~r11: 变量寄存器
r9: sb 静态基址
r10: sl 堆栈限制
r11: fp 帧指针
r12: ip 过程调用中间临时寄存器
r13: sp 堆栈指针
r14: lr 链接寄存器
r15: pc 程序计数器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值