1、伪指令是什么

ARM伪指令不是ARM指令集中的指令,只是为了编程方便人们定义了伪指令。

在汇编时这些指令将会被等效的ARM指令或arm指令的组合代替。

编程时可以像其他ARM指令一样使用伪指令,区别是伪指令不像指令一样有对应的机器编码。

我今天主要给大家介绍4条这样的伪指令。其实还有与这四条伪指令形式类似但是作用完全不同的伪指令,他们主要是指导汇编器完成汇编工作,例如定义数据、分配储存区、程序初始化。我们这四条伪指令的作用仅仅是用一条指令代替多条指令,方便编程

在给大家演示之前,我想给介绍一下我碰见的一个关于PC的问题

2、PC

程序计数器存放下一条要执行的指令的地址。

ARM(ARM7) 采用三级流水线结构,取指、译码、执行,PC始终指向你要取的指令的地址,而不是执行完一条指令后指向下一条指令的地址。

汇编器把R15(PC)这个显示值进行了补偿,使“PC指向下一条要执行的指令的地址”这个逻辑看起来合理。

3、ADR/ADRL

指令书写格式:ADR(ADRL)[<cond>] <Rd>,<label>

将地址载入寄存器中。基于PC相对偏移的地址读取到寄存器中。通常会被一条ADD或SUB指令替代实现相同功能。

ADR是小范围地址读取伪指令当地址值是字节对齐时,取值范围为-255到255,当地址值是字对齐时,取值范围-1020到1020

ADRL是中等范围地址读取伪指令当地址值是字节对齐时,取值范围为-64KB到64KB,当地址值是字对齐时,取值范围为-256KB到256KB。ADRL伪指令比ADR伪指令可以读取更大范围的地址,这是因为在编译阶段,ADRL伪指令被编译器换成两条指令。如果汇编器不能再两条指令内完成操作,将报告错误,终止编译。

ADRL 始终汇编为两个 32 位指令。 即使使用单个指令就可完成地址访问,也会生成多余的第二个地址。

4、LDR

指令书写格式:LDR[<cond>][<.W>]<Rd>,<=expr>/<=label_expr>

由于编码格式的限制,ARM在使用MOV指令时所能操作的立即数值范围是有限的。为了编程方便可以使用LDR伪指令加载数值。

如果表达式expr的值能用一个MOV或MVN指令进行加载,那么汇编器就使用MOV或MVN指令。

如果立即数由于超出了 MOV 和 MVN 指令的范围,或者使用了label_expr,汇编器就把这个常量放在文字池里然后使用一条PC相对形式的LDR指令从文字池里读取这个常量。

其一般指令LDR和宏指令LDR格式相似。处理为宏指令的情况中,指令是否有“=”为区别的关键

5、MOV32

指令书写格式:MOV32 [<cond>] <Rd>,<expr>/<label_expr>

此指令只可用于ARMv6T2 及更高版本中的ARM和Thumb状态

将数值或地址装载到寄存器中,类似LDR

编译器会将MOV32翻译为movw和movt两条指令。

MOVW会把16位立即数放到寄存器的底16位,并将高16位清0。

MOVT 会把16 位立即数放到寄存器的高16位,同时低16位不受影响。

6、UND

UND [<cond>][<.W>] <#expr>

生成无体系结构定义的指令。此伪指令生成的编码将反汇编为 DCI

执行未定义指令会引发未定义的异常。程序员可以利用指令异常完成相应的异常处理

ARM伪指令的更多相关文章

  1. ARM伪指令,王明学learn

    ARM伪指令 在ARM汇编语言程序中里,有一些特殊指令助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作.伪指令在元程序中的作用是为完成汇编 ...

  2. ARM汇编初探---汇编代码中都有哪几类指令---ARM伪指令介绍

    要学习一个东西首先要把概念搞清楚,以下仅仅是自己的一些关于汇编的理解. 可运行文件里的01码是机器码,机器码不等于汇编码,尽管机器码能够非常easy翻译成汇编码. 汇编码中包括非常多汇编指令.伪指令和 ...

  3. ARM伪指令与伪操作

    一.伪指令 ARM伪指令有四个,分别是LDR.ADR.ADRL和NOP,下边对其分别介绍. 1.1 LDR LDR 伪指令用于加载 32 位的立即数或一个地址值到指定寄存器 .形式如  LDR{con ...

  4. [国嵌笔记][026][ARM伪指令]

    ARM机器码 1.汇编程序通过汇编器变成机器码,然后才能在ARM处理器上运行 2.ARM机器码是一个32位的数,被分成了多个段,每个段都有各自的含义 3.格式: cond:表示条件(4位) I:表示源 ...

  5. ARM伪指令和协处理器访问指令

    伪指令本身没有对应的机器码 .global声明全局符号,点事GUN汇编的特点 .data定义数据段 .equ DA #0x89 定义宏 .align 4 4字节对齐 mov 指令里的立即数只能是8位的 ...

  6. ARM学习笔记9——ARM汇编汇编语言中的伪指令

    ARN汇编器支持ARM伪指令,这些伪指令在汇编阶段被翻译成ARM或Thumb指令.ARM伪指令包含ADR.ADRL.MOV32和LDR.一.ADR伪指令 1.作用 ADR是小范围地址读取伪指令,基于P ...

  7. 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 :  -- AR ...

  8. ARM指令教程

    ARM指令教程 ARM汇编程序特点: l         所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理 ...

  9. ARM指令集(下)

    A.2.5   ARM 协处理器指令         ARM 支持协处理器操作,协处理器的控制要通过协处理器命令实现.表A-7给出全部的ARM协处理器指令. 表A-7  ARM 协处理器指令 CDP ...

随机推荐

  1. yum 原理C/S原理结构图

    yum 原理C/S原理结构图

  2. golang学习笔记18 用go语言编写移动端sdk和app开发gomobile

    golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...

  3. <转>jmeter(十三)常见问题及解决方法

    本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...

  4. Selenium 常用定位对象元素的方法

    常见定位对象元素的方法 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方 ...

  5. 使用tableau去将存入mysql都地区点击率进行了展示 感觉很好用

    1.连接数据源很多选项:hive mysql Oracle 等所有数据库 2.写上hive2的那个客户端连接,下边会显示出让我装连接的驱动 ,所有jdbc都需要这样 点进去找到windows的下载一键 ...

  6. torchvision.datasets.ImageFolder数据加载

    ImageFolder 一个通用的数据加载器,数据集中的数据以以下方式组织 root/dog/xxx.png root/dog/xxy.png root/dog/xxz.png root/cat/12 ...

  7. composer 报错:Failed to decode response: zlib_decode(): data error 解决办法

    执行命令 composer require particle/validator 报错 Failed to decode response: zlib_decode(): data error 网上推 ...

  8. eclipse maven Errors while generating javadoc on java8

    With JDK 8, we are unable to get Javadoc unless your tool meets the standards of doclint. Some of it ...

  9. C# ms speech文字转语音例子

    最近突发奇想 想玩玩  文字转语音的东东   谷歌了一下 发现微软有一个TTS 的SDK   查了查相关资料  发现 还真不错  然后就开始玩玩Microsoft Speech SDK的 DEMO了 ...

  10. Fiddler抓取手机端(ios+android)APP接口数据(http+https)

    (1)android 环境要求: PC机和手机连接在同一网络下 工具下载地址: Fiddler网上可以下载,自行下载.注意:需要安装fiddlercertmaker(网上自行下载)进行认证 配置步骤: ...