课程列表

基本问题

开源资源

好好学习天天向上

联大大纲—通信电子 ;教师介绍; 单片机课程学习经验- 学习路线图; 1.概述 -应用 -定义 -特点 -构成; 2.嵌入式处理器 —DIY CPU处理器ARM处理器Cortex-A8S5PV210讨论; 3.汇编语言 -作业 4.Bootloader -作业 5.Linux内核移植 6.嵌入式Linux程序设计 7.图形用户接口QT 8.其他框架介绍; 9.嵌入式物联网应用系统设计

汇编命令

ARM GNU汇编命令格式

label: instruction or directive or pseudo-instruction  @comment

 

(1)label:标号字段。Linux ARM 汇编语言中,任何以冒号结尾的标识符都被认为是一个标号。
 

(2) instruction or directive or pseudo-instruction:指令或伪指令字段。

由上一节介绍的ARM汇编指令或者用于GNU编译器编译过程的伪指令构成。

 

(3)@comment:是注释字段。“@”以后的所有字符在编译过程中均被认为是注释标识符,不参与编译过程。可以使用“@”或使用C语言风格的注释(/*……*/)来代替分号“; ”

 

专有符号

 

“:” 用于定义标号
“@” 当前位置到行尾为注释字符。
“#” 整行注释字符。
“; ” 新行分隔符。
“#”或“$” 直接操作数前缀。
“.arm” 以arm格式编译,同code32
“.thumb” 以thumb格式编译,同code16
“.code16” 以thumb格式编译
“.code32” 以arm格式编译

 

常用伪指令

Assemble Indirectives更多信息)

(1).align absexpr1, absexpr2
/*存储边界对齐命令。获取符合对齐方式要求的最近地址号,absexpr1对齐方式,为4, 8,16或32bit,absexpr2空余单元的填充值,缺省填0*/
(2).code [16|32] @指定指令编码长度为Thumb指令|ARM指令
(3).data subsection @定义数据段,段名为subsection
(4).end @汇编文件结束标志,常省略。
(5).equ symbol, expression @定义常量表达式
(6).global symbol
@声明全局符号(函数名),用于外部程序跳转或调用。
(7).macro/.endm @定义宏代码, .macro表示开始, .endm表示结束。
 

预编译宏

计算机科学里的宏(Macro),是一种批量批处理的称谓。一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。这种替换在预编译时进行,称作宏展开。

讲解:

1、宏的处理阶段:预编译

2、

.ifdef  <symbol>  @rugged之前有符号symbol的定义,那么.ifdef和.endif之间代码被编译

.endif

3、对于以下类似于函数似的宏,其重点是替换。

.macro <name> {<arg_1>} {,<arg_2>}...{<arg_N>}

.endm

.exitm