1-3-3 ARM伪指令以及协处理器访问指令

原创 2016年08月30日 20:12:38

1.  ARM机器码

    用命令“arm-linux-objdump -D -Sstart.elf”可以查看start.elf的反汇编信息,例如其中的一行:30008000: e59f008c 翻译成汇编,就是ldr r0, [pc, #140],其中的e59f008c就是32bit的ARM机器码。关于ARM机器码的详细解释,可参看《ARM Architecture Reference Manual》以及《The ARM Instrction set encoding》进行分析。


2.  定义类伪指令

    而伪指令,就是没有对应的机器码,只能在编译的过程中起作用,在编译时转化为其他实际指令运行。

    用命令“arm-linux-readelf -a start.elf”可查看地址和段信息。

    2.1    .global    :定义一个全局标号

    2.2    .ascii       :定义一个字符串

    2.3    .byte        :定义一个字节的数据

    2.4    .word       :定义一个字的数据

    2.5    .data        :定义数据段

    2.6    .equ         :定义一个宏

    2.7    .align       :4字节对齐

例如:

.data

hello:

    .ascii "abcdefg"    ;利用反汇编可观察到

bh:                              ;word 0x64636261

    .byte 0x1                ;word 0x68676665

.align 4

add

    .word 0xff

.text

.global _start

_start:

    .equ DA, 0x89

mov r0, #DA


3.  操作类伪指令

  3.1  nop :空操作,实质是执行了一个mov r0, r0的操作

  3.2  ldr :如果要向r0填入大于8bit的立即数,可以ldr r0, =0x1ff,但mov r0, #0x1ff就不行,因为mov只能8bit立即数,多了就不行了。(重要)


4.  ARM协处理器访问指令(可参考《ARM920T》手册)

  4.1  协处理器——cp15:主要用于执行特定的处理任务,ARM最多支持16个协处理器,在ARM中,cp15用于协助处理器控制cache,clock,mmu等。

  4.2  协处理器访问指令:mcr,mrc

    例如:mrc p15,0,r0,c0,c0,0


总结:

内存访问:str ldr

cpsr访问: msr mrs

cp15访问:mcr mrc

版权声明:本文为博主原创文章,未经博主允许不得转载。

ARM 伪指令详解

4.1 ARM汇编器所支持的伪指令 在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操...
  • chunlovenan
  • chunlovenan
  • 2015年03月29日 10:34
  • 1561

ARM伪指令和伪操作

(一)GNU汇编书写格式 注释符:@和# 语句分离符: ; 立即数前缀: #或$ 段内标号的地址值在汇编时确定 段外标号的地址值在连接时确定 局部标号:主要在局部范围内使用而且局部标号可以重复...
  • y695385603
  • y695385603
  • 2013年10月27日 13:48
  • 2446

关于ARM9协处理器CP15及MCR和MRC指令

在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。访问CP15寄存器的指令MCR   ARM寄存器到协处理器寄存器的...
  • zhou1232006
  • zhou1232006
  • 2011年01月18日 16:45
  • 8079

arm常用汇编指令和伪指令

arm常用汇编指令和伪指令 adr ldr bic mrs msr cmp str swp bne beq cp15
  • he980725866
  • he980725866
  • 2016年05月01日 20:13
  • 393

ARM伪指令之地址读取:ADR/ADRL/LDR

下面文章转自网络文章: 1、ADR伪指令--- 小范围的地址读取      ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。 在汇编编译器编译源程序时,ADR伪...
  • lwj103862095
  • lwj103862095
  • 2012年10月15日 16:56
  • 2910

arm协处理器(CDP,LDC,STC,MCR,MRC)

ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。ARM 的协处理器指令主要用于 ...
  • lhf_tiger
  • lhf_tiger
  • 2012年11月20日 22:08
  • 1972

arm 协处理器cp14 cp15

ARM926EJ-S/ARM920T 协处理器 CP14, CP15详解   ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指...
  • kuteng8801
  • kuteng8801
  • 2009年05月15日 14:11
  • 3982

ARM LDR伪指令用法详解

LDR伪指令 10.45 LDR pseudo-instruction           功能:把一个32位立即数或一个32位的内存地址加载到一个寄存器中。           注意:这里描述...
  • ASMARM
  • ASMARM
  • 2014年06月09日 09:31
  • 2549

ARM的AREA指令的使用

AREA指令指示汇编程序汇编新的代码节或数据节。节是不可分的已命名独立代码或数据块,它们由链接器处理。有关详细信息,请参阅ELF节和AREA指令。语法    AREA sectionname{,ATt...
  • canjiangsu
  • canjiangsu
  • 2011年01月24日 21:45
  • 5250

ARM汇编ADR,LDR等伪指令

arm中LDR伪指令与LDR加载指令LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV...
  • mengzhuicanyang
  • mengzhuicanyang
  • 2012年05月08日 13:22
  • 3885
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1-3-3 ARM伪指令以及协处理器访问指令
举报原因:
原因补充:

(最多只允许输入30个字)