微处理器系统结构与嵌入式系统设计笔记(七)

本文详细介绍了ARM程序开发环境,包括基于Windows和Linux的开发工具,重点讲解了RVDS开发环境。深入探讨了汇编语言伪指令,如符号定义、数据定义、汇编控制等,并给出了实例。此外,还阐述了ARM汇编语言程序设计,包括程序结构、分支、循环和子程序调用。最后,讨论了ARM汇编与C/C++的混合编程,包括函数调用规则和内嵌汇编的使用。
摘要由CSDN通过智能技术生成

9.1 ARM程序开发环境

9.1.1 常见ARM程序开发环境简介

  ARM程序开发环境主要分为基于Windows平台和基于Linux平台的两大类。其中主要有:
  基于Windows平台:ADS1、RVDS2、EWARM3、RealView MDK4
  基于Linux平台:ARM-Linux-GCC5

9.1.2 RVDS开发环境简介

  RVDS是ARM公司继SDT和ADS1.2之后主推的新一代开发工具。集程序编辑、编译和调试于一体,支持软件仿真和硬件调试,支持汇编、C和C++等多种代码的编译。

9.2 汇编语言伪指令

  在汇编语言程序里,为完成汇编程序中如定义变量、分配数据存储空间、控制汇编过程、定义程序入口等的各种准备操作的一些特殊助记符称为伪指令,它们没有对应的机器码,且不同汇编器的伪指令可能会有少量区别。

9.2.1 符号定义伪指令

用于定义ARM汇编程序中的变量,对变量赋值和定义寄存器等。

助记符 指令功能描述
GBLA 定义一个全局的数字变量,并初始化为0
GBLL 定义一个全局的逻辑变量,并初始化为F(假)
CBLS 定义一个全局的字符串变量,并初始化为空
LCLA 定义一个局部的数字变量,并初始化为0
LCLL 定义一个局部的逻辑变量,并初始化为F
LCLS 定义一个局部的字符串变量,并初始化为0空
SETA 用于给一个数字变量赋值
SETL 用于给一个逻辑变量赋值
SETS 用于给一个字符串变量赋值
RN 用于给一个特殊的寄存器命名
CN 用于给一个协处理器的寄存器命名
CP 用于给一个协处理器命名
DN 用于给一个双精度的VFP寄存器命名
SN 用于给一个单精度的VFP寄存器命名
FN 用于给一个FPA浮点寄存器命名
RLIST 定义一个通用寄存器列表,根据寄存器编号由低到高访问

实例:
    GBLL L_OFF  ;定义全局逻辑变量L_OFF
L_OFF SETL {FALSE}  ;给全局逻辑变量赋值为假

9.2.2 数据定义伪指令

一般用于为特定的数据分配存储单元,同时完成对已分配存储单元的初始化工作。常用指令如下:

助记符 指令功能描述
SPACE 用于分配一片连续的存储单元,并初始化为0
DATA 在代码段中使用数据
DCB 用于分配一片连续的字节存储单元,并用指定的表达式初始化
DCW 用于分配一片连续的半字存储单元,并用指定的表达式初始化
DCD 用于分配一片连续的字存储单元,并用指定的表达式初始化

实列:
DataSpace SPACE 100  ;分配连续100字节的存储单元并初始化为0
src DCD 1,2,3,4,5    ;用数字常量初始化标号为src的连续字存储空间

9.2.3 汇编控制伪指令

用于控制汇编程序的执行流程。常见的汇编控制伪指令包括一下几条:

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值