文档详情

第四节arm汇编语言设计.ppt

发布:2017-05-07约9.29千字共63页下载文档
文本预览下载声明
ARM汇编语言的伪操作、宏指令与伪指令 两种常见的ARM编译开发环境 ADS编译环境下的伪操作和宏指令 GNU编译环境下的伪操作和宏指令 ARM汇编语言的伪操作、宏指令与伪指令 两种常见的ARM编译开发环境 ADS编译环境下的伪操作和宏指令 GNU编译环境下的伪操作和宏指令 两种常见的ARM编译开发环境 ADS(ARM Developer Suite) IDE 开发环境:它由ARM公司开发,使用了CodeWarrior公司的编译器; 集成了GNU开发工具的IDE开发环境 它由GNU的汇编器as、交叉编译器gcc、和链接器ld等组成。 目前常用的ARM编译环境有2种: ARMASM ARM公司的IDE中使用了CodeWarrior的编译器,绝大多数windows下的开发者都在使用这一环境,完全按照ARM的规定; GNU ARM ASM GNU工具的ARM版本,与ARMASM略有不同; ARM程序设计基础 伪操作(derective) 伪指令(Pseudo-instruction) ARM汇编语言语句格式 ARM汇编语言的程序格式 ARM汇编语言的伪操作、宏指令与伪指令 两种常见的ARM编译开发环境 ADS编译环境下的伪操作和宏指令 GNU编译环境下的伪操作和宏指令 标号 基于PC的标号: 位于目标指令前或者程序中数据定义伪操作前的标号。汇编时将被处理成PC值加上或减去一个数字常量。常用于表示跳转指令的目标地址,或者代码段中的少量数据。 基于寄存器的标号: 用MAP,FIELD伪操作定义。汇编时将被处理成寄存器的值加上或减去一个数字常量。常用于访问位于数据段中的数据。 绝对地址: 32位数字量 数字常量 数字常量是32位的整数 无符号数:0~232-1 有符号数时:-231~231-1。 EQU:定义数字常量 变量 变量有数字变量、逻辑变量和字符串变量 数字变量的大小不应超出数字变量所能表示的范围 逻辑变量只有两种取值情况:真{true}或假{false} 字符串变量的长度不应超出字符串变量所能表示的范围 GBLA、GBLL、GBLS:声明全局变量 LCLA、LCLL、LCLS:声明局部变量 SETA、SETL、SETS:赋值 ARM汇编语言中的表达式 表达式由符号、数值、单目或多目操作符以及括号组成。在一个表达式内各种元素的优先级: 括号内的表达式优先级最高 各种操作符有一定的优先级 相邻的单目操作符的执行顺序为由右到左,单目操作符优先级高于其他操作符 优先级相同的双目操作符执行顺序为由左到右 字符串表达式 字符串 双引号“ ”;$$-$;““-“ 示例: abc SETS “this string contains only ““ double quote” def SETS “this string contains only $$ double quote” 字符串表达式 操作符 LEN :LEN: A CHR :CHR: A STR :STR: A LEFT A:LEFT: B RIGHT A:RIGHT:B CC A:CC:B 字符串表达式 示例 GBLS STRING1 GBLS STRING2 STRING1 SETS “AAACCC” STRING2 SETS “BB”:CC:(STRING1:LEFT:3) ;STRING2:“BBAAA” 数字表达式 整数数字量 示例: a SETA 34906 Addr DCD 0xA10E DCD 2c3 SETA 8_74007 DCQ 0x123456789abcdef 数字表达式 浮点数字量 单精度浮点数表示范围:3.4e+38~1.18e-38 双精度浮点数表示范围:1.8e+308~2.23e-308 示例: DCFD 1E308,-4E100 DCFS 1.0 DCFD 3.725e15 DCFS 0x7FC00000 DCFD FFF0000000000000 数字表达式 操作符 NOT按位取反 :NOT:A +、-、×、/ 及MOD算术操作符 A+B,A-B,A×B,A / B,A:MOD:B ROL、ROR、SHL及SHR移位(循环移位)操作 A:ROL:B,A:ROR:B,A:SHL:B,A:SHR:B AND、OR、EOR按位逻辑操作符 A:AND:B,A:OR:B,A:EOR:B 逻辑表达式 关系操作符(无符号数) A=B AB AB
显示全部
相似文档