美文网首页
ARM学习之常用的伪指令详解

ARM学习之常用的伪指令详解

作者: 随波逐流007 | 来源:发表于2017-09-29 16:32 被阅读43次

AREA就是常见的伪指令之一。AREA是声明区域段,数据区,代码区等等。什么是数据段呢?数据段是来定义数据结构体的。格式是AREA test,CODE,READONLY。还有指令CODE16、CODE32,格式就直接写上就是。目的是声明以下是32位还是16位指令,注意不是切换arm和thunmb模式。如果是16位,那就是thunmb指令。

操作:这是之前的,如果在这里做一个声明,CODE32,也就是表示ARM指令。如果这里CODE16,就表示一下代码是16位指令,也就是thunmb指令,

也就是说在编译的时候会按照thunmb指令来进行汇编。大家注意一点,在这里通过这个切换,并不会改变处理器的运行的处理模式。不会把ARM指令状态切换为thunmb指令状态。这个切换是在状态寄存器里面去切换T。这个地方只是告诉汇编器而已,所以并不会更换运行时候的指令切换方式。

entry:entry伪指令用于指定汇编程序的入口点。在一个完整的汇编程序中至少要一个entry(也可以多个,当有多个entry时,程序的真正入口点由链接器指定),但在一源文件里最多只能有一个entry(可以没有)。

END:END伪指令用于通知编译器已经到了源程序的结尾。

EQU:EQU伪指令用于为程序中的常量、标号等定义一个等效的字符名称,类似于c语言的#define。格式是UARTLCON0 EQU.0x3FFD00。比方说:SUNDYCON1 EQU 0x3200000,我们定义了一个常量,这个常量可以拿来直接用。这里注意一点,我们编译先看一下。这里就出错了。

未知的操作代码。这是怎么回事?汇编这一块,跟自己的汇编器,编译器是有关系的,有时跟ID的环境都有关。在ARM里面,特别ADS里面,他对是否顶头,和Tab要求非常严格。因为我们这里不是一个标准指令,它会看第一个是什么操作码,这里操作码是不识别的,所以这里就出错认不出来。这是应该怎样做呢?首先把SUNDY顶头,就可以知道只是个伪指令。

EXPOET:export伪指令用于程序中声明一个全局的标号,该标号可在其他的文件中引用。export可用GLOBAL代替。标号在程序中区分大小写,weak选项声明其他的同名标号优先于该标号被引用。

IMPORT相当于静态引用。IMPORT伪指令用于通知编译器要使用的标号在其他的源文件中定义,但要在当前源文件中引用,而且无论当前源文件是否引用该标号,该标号都会被加入到当前源文件的符号表中。

EXTERN相当于动态引用。EXTERN伪指令用于通知编译器要使用的标号在其他的源文件中定义,但要在当前的源文件中引用,如果当前源文件实际未引用该标号,该标号就不会被加到当前源文件的符号表中。

GET相当于引用文件。GET伪指令用于将一个源文件包含到当前的源文件中,并将被包含的源文件在当前位置进行汇编处理。可以使用INCLUDE代替GET。

RN:RN伪指令用于给一个寄存器定义一个别名。采用这种方式可以方便程序员记忆该寄存器的功能。其中,名称为给寄存器定义的别名,表达式为寄存器的编码。

RN的格式:name RN Rn。鉴于这种方式,这里应该顶头。比方说这里给一个别名SRegister,SRegister RN R0。再用就可以MOV SRegjister #0x12。这样可以通过SRegister来代替R0寄存器。这就是关于常用的伪指令的符号。这些都很容易理解,就只有EQU,其实EQU只要记住类似于define就可以了。汇编语言程序中常见的符号。之前学过的有很多条件操作符号,比如,EQ,LT,GT,NE等等,用这些东西进行中一些数据运算。有时需要把某一个值临时存到一个临时的变量里,然后回过头在用到这个变量。以前是没有办法的,只能去操作,定一些值,把这些值存储到临时寄存器里面,然后用完再把它取出来。这样很麻烦。

原文链接:http://www.maiziedu.com/wiki/arm/common/

相关文章

  • ARM学习之常用的伪指令详解

    AREA就是常见的伪指令之一。AREA是声明区域段,数据区,代码区等等。什么是数据段呢?数据段是来定义数据结构体的...

  • ARM汇编伪指令详解

    我们做一些操作会有一点麻烦,比方进行一个if then的判断操作。比如要比较a>b,则去调用某个函数,这就要先去比...

  • 17 ARM汇编伪指令

    伪指令的意义 伪指令不是指令,伪指令和指令的根本区别是经过编译后不会生成机器码 伪指令的意义在于知道编译过程 伪指...

  • 2018-07-13

    Androguard 安装 使用 ARM汇编 汇编指令 伪指令 伪操作 .arch 框架.fpu 协处理器类型 $...

  • iOS源码解析:runtime<一> isa,cla

    isa详解 要想学习runtime,首先要了解它底层的一些常用的数据结构,比如isa指针。在arm64架构之前,i...

  • 2018-07-14

    ARM汇编 注记符号 指令助记符 伪指令常量 EQU 相当于 C中的 #Define 变量 这些声明具...

  • RxSwift 学习笔记

    整理学习过程 Binder 常用操作符详解

  • ARM ELF文件

    ARM ELF文件 【转CSDN】 ARM 之一 ELF文件、镜像(Image)文件、可执行文件、对象文件 详解 ...

  • u-boot启动流程分析之start.s,第一阶段

    文件:u-boot-1.1.6\cpu\arm920t\start.S reset部分代码详解 关于arm寄存器的...

  • 伪指令LDR和ADR的分析

    Q:为什么要进行分析? A:伪指令在arm汇编中占有非常重要的地位,通常可以帮助我们在进行汇编编程的时候简化编程难...

网友评论

      本文标题:ARM学习之常用的伪指令详解

      本文链接:https://www.haomeiwen.com/subject/jxgiextx.html