1 / 33

大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut

ARM 嵌入式系统结构与编程. 大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut.edu.cn 参考教材: 《ARM 嵌入式系统结构与编程 》 清华大学出版社 2009 年 3 月出版. 本章将详细介绍进行汇编语言程序设计时所用的 ARM/Thumb 汇编语言伪指令、由 ARM 公司推出的开发工具所支持的伪操作以及 GNU ARM 开发工具所支持的伪操作。. 第 6 章 ARM 汇编伪指令与伪操作. 内容提要. 6 . 1 汇编语言伪指令 6 . 2 ARM 汇编语言伪操作

tamas
Download Presentation

大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ARM嵌入式系统结构与编程 • 大连理工大学软件学院 邱铁 办公楼409 Tel:87571521 E_mail: qiutie@dlut.edu.cn 参考教材:《ARM嵌入式系统结构与编程》 清华大学出版社2009年3月出版

  2. 本章将详细介绍进行汇编语言程序设计时所用的ARM/Thumb汇编语言伪指令、由ARM公司推出的开发工具所支持的伪操作以及GNU ARM开发工具所支持的伪操作。 第6章 ARM汇编伪指令与伪操作

  3. 内容提要 6.1 汇编语言伪指令 6.2 ARM汇编语言伪操作 6.3 ARM汇编伪操作 6.4 GNU ARM汇编伪操作

  4. 6.4 GNU ARM汇编伪操作 • 在嵌入式系统开发中,不可避免的要使用GNU工具,要进行嵌入式LINUX的移植与开发,其中与硬件直接相关的部分要用汇编语言来编程。

  5. 6.4.1 符号定义伪操作 • 1.常量定义伪操作.equ或.set • 语法格式: • .equ symbol, expr • .set symbol, expr • 其中: • symbol 为要指定的名称,它可以是以前定义过的符号; • expr 表示数字常量或程序中的标号。

  6. 2.常量定义伪操作.equiv • 语法格式: • .equiv symbol, expr • 其中: • symbol 为要指定的名称,它不可以是以前定义过的符号; • expr 表示数字常量或程序中的标号。

  7. 3.声明全局常量伪操作.global或.globl • 语法格式: • .global symbol • .globl symbol • 其中: • symbol 为要声明的全局变量名称

  8. 4.声明外部常量伪操作.extern • 语法格式: • .extern symbol • 其中: • symbol 为要声明的外部变量名称

  9. 6.4.2 数据定义伪操作 • 1.字节定义.byte • 语法格式: • .byte expr {, expr }… • 其中: • expr 数字表达式或程序中的标号。

  10. 2.半字定义.hword或.short • 语法格式: • .hword expr {, expr }…. • .short expr {, expr }… • 其中: • expr 数字表达式或程序中的标号。

  11. 3.字定义.word或.int或.long • 语法格式: • .word expr {, expr }…. • .int expr {, expr }… • .long expr {, expr }… • 其中: • expr 数字表达式或程序中的标号。

  12. 4.字符串定义.ascii和.asciz或.string • 语法格式: • .ascii expr {, expr }… • .asciz expr {, expr }… • .string expr {, expr }… • 其中: • expr 表示字符串。

  13. 5.双字定义.quad • 语法格式: • .quad expr {, expr }… • 其中: • expr 数字表达式。

  14. 6.四字定义.octa • 语法格式: • .octa expr {, expr }… • 其中: • expr 数字表达式。

  15. 7.单精度浮点数定义.float或.single • 语法格式: • .float expr {, expr }…. • .single expr {, expr }…. • 其中: • expr 为32位的 IEEE 单精度浮点数。

  16. 8.双精度浮点数定义.double • 语法格式: • .double expr {, expr }… • 其中: • expr 为32位的 IEEE 单精度浮点数。

  17. 9.重复内存单元定义.fill • 语法格式: • .fill repeat {, size}{, value} • 其中: • repeat 重复填充的次数; • size 每次所填充的字节数; • value 所填充的数据。

  18. 9.零填充字节内存单元定义.zero • 语法格式: • .zero size • 其中: • size 所分配的0填充字节数

  19. 10.固定填充字节内存单元定义.space或.skip • 语法格式: • .space size {, value} • .skip size {, value} • 其中: • size 所分配的字节数

  20. 11.声明数据缓冲池.ltorg • 语法格式 • .ltorg

  21. 6.4.3汇编与反汇编代码控制伪操作 • 指令集类型标识伪操作 • .arm • .code 32 • .thumb • .code 16

  22. 段属性定义伪操作 • 语法格式如下: • .section expr • 其中: • expr 为段属性,可以是.text、.data、.bss中的一个。

  23. 段起始声明伪操作 • 具体的语法格式如下: • .text • .data • .bss

  24. 对齐方式设置伪操作.align或.balign • 语法格式: • .align {alignment} {, fill} • .balign {alignment} {, fill} • 其中: • alignment 是一个数值表达式,用于指定对齐方式,其取值在0~15范围内; • fill 用来指定进行填充的数据。

  25. 代码位置设置伪操作.org  • 语法格式: • .org offset {, expr}  • 其中: • offset 是一个数值表达式,表示地址偏移量; • expr 用来指定进行填充的数据。

  26. 6.4.4预定义控制伪操作 • 汇编器在对程序代码进行编译时,会根据汇编控制伪操作的定义情况对程序进行编译,常用的有条件编译、宏定义和文件包含

  27. 1.条件编译伪操作.if • 语法格式: • .if logical_expression • 程序代码段A • {.else • 程序代码段B • } . • .endif

  28. 2. 宏定义伪操作.macro • 语法格式: • .macro • { macroname {parameter{,parameter}…} • 程序代码段 • .endm其中:

  29. 3.文件包含伪操作.include • .include伪操作用于将一个源文件包含到当前的源文件中,所包含的文件在.include指令的位置处进行汇编处理。 • 语法格式: • .include "file_name"

  30. 伪操作在汇编编程时应用较多,具本应用请参考教材《ARM嵌入式系统结构与编程》第6章6.4节实例分析伪操作在汇编编程时应用较多,具本应用请参考教材《ARM嵌入式系统结构与编程》第6章6.4节实例分析

  31. 思考与练习题 • 定义一个结构化的内存表,其首地址固定为0x900,该结构化内存表包含2个域,Fdata1长度为8个字节,Fdata2长度为160个字节。 • 有ARM ADS伪操作将寄存器列表R0-R5、R7、R8的名称定义为Reglist。

  32. 第6章 ARM汇编伪指令与伪操作 The End

More Related