第五章ARM嵌入式系统的编程5.1ARM汇编语言伪操作、宏指令和伪指令(P173)基本概念1、伪操作:为完成汇编程序做各种准备工作,只在汇编过程中起作用,一旦汇编结束,它的作用也随之结束2、宏指令:是一段独立的程序代码,可插在源程序中。与子程序相似,但有本质不同。3、伪指令:在汇编时将被合适的指令代替。伪操作、宏指令一般与编译器有关,常用ARM编译开发环境有2种:GNU(基于EmbestIDE环境)和ADS(ARM公司提供)
第五章 ARM嵌入式系统的编程 5.1 ARM汇编语言伪操作、宏指令和伪指令(P173) 1、伪操作:为完成汇编程序做各种准备工作,只在汇编过程 中起作用,一旦汇编结束,它的作用也随之结束。 2、宏指令:是一段独立的程序代码,可插在源程序中。与子程 序相似,但有本质不同。 3、伪指令:在汇编时将被合适的指令代替。 伪操作、宏指令一般与编译器有关,常用ARM编译开发环境有2 种:GNU(基于Embest IDE环境)和ADS(ARM公司提供) 一、基本概念
二、GNU编译环境下的常用ARM伪操作和宏指令(P201)1、常量编译控制伪操作.byte分配一段字节内存单元(字节对齐)例: .byte 21, 48, 89, 0x13, 0xFF类似的有:分配一段半字内存单元(半字对齐).hword.long、.int分配一段字内存单元(字对齐).word
二、GNU编译环境下的常用ARM伪操作和宏指令 1、常量编译控制伪操作(P201) .byte 分配一段字节内存单元(字节对齐) 例: .byte 21, 48, 89, 0x13, 0xFF 类似的有: .hword 分配一段半字内存单元(半字对齐) .word、 .long、 .int 分配一段字内存单元(字对齐)
(204)2、字符编译控制伪操作(1).equ为数字常量、基于寄存器的值和程序中的标号定义一个字符名称。例:..equ num, 20声明一个全局变量(声明一个能被其他文件引用(2).global万的符号)例:globalstart
2、字符编译控制伪操作(204) (1).equ 为数字常量、基于寄存器的值和程序中的标号定义 一个字符名称。 例: .equ num , 20 (2) .global 声明一个全局变量(声明一个能被其他文件引用 的符号) 例: .global _start
3、汇编程序代码控制伪操作(P205)代码段开始text数据段开始.databss段开始(未初始化的全局变量).bss.code 16/ 32.thumb.arm标记汇编文件结束.end将一个源文件包含到当前文件中.include
3、汇编程序代码控制伪操作(P205) .text 代码段开始 .data 数据段开始 .bss bss段开始(未初始化的全局变量) .code 16| 32 .thumb .arm .end 标记汇编文件结束 .include 将一个源文件包含到当前文件中
4、宏编译控制伪操作(P207)5、条件编译控制伪操作(P209)三、ARM汇编语言的伪指令(P211)1、小范围的地址读取伪指令ADR2、中等范围的地址读取伪指令ADRL3、大范围的地址读取伪指令LDR(P213)示例89(233)ADS和GNU编译环境下程序比较
4、宏编译控制伪操作(P207) 5、条件编译控制伪操作(P209) 三、ARM汇编语言的伪指令(P211) 1、小范围的地址读取伪指令ADR 2、中等范围的地址读取伪指令ADRL 3、大范围的地址读取伪指令LDR(P213) 示例89(233)ADS和GNU编译环境下程序比较