arm汇编指令

author author     2023-04-05     709

关键词:

ARM汇编指令基于RISC架构,因此其指令集非常精简,本文重点介绍必须掌握的相关指令。

1.算数和逻辑指令

mov 指令: mov r0, #1 @ 0x1 ---> r0
mvn指令:mvn r0, #0 @0x0取反 ---> r0
add指令: add r0, r1, r2 @ r0 = r1 + r2
sub指令: sub r0, r1, r2 @ r0 = r1 - r2
and指令: and r0, r1, r2 @ r0 = r1 & r2
bic指令: bic r0, r0, #0b1011 @ 用掩码清零r0,存入r0

2.比较指令

cmp指令: cmp r0, r1 @根据r0-r1值判断状态寄存器(cpsr寄存器)
tst指令: tst r0, #0b1001 @按位与的值判断状态寄存器(cpsr寄存器)

3.跳转指令

b指令: b label @直接跳转
bgt label1 @大于跳转
beq @等于跳转
bl指令: bl func @调用函数跳转(长跳转)

4.位移指令

lsl指令: mov r0, r0, lsl#2 @r0寄存器值算数左移2位
ror指令: mov, r0, r0,ror#1 @r0循环右移1位

5.程序状态指令

msr指令: mrs r0,cpsr @cpsr复制到msr
mrs指令: msr cpsr, r0 @r0复制到cpsr

6.存储器访问指令(如:内存)

ldr指令: ldr r0, [r1] @ r1内存地址到r0
ldr r0, [r1, #1]
str指令: str r0, [r1] @r0到r1内存地址
str r0, [r1, #1]

7.伪指令

伪指令并没有对应的机器码,是给汇编器看的,在编译时候起作用或者转换成其他指令。
(1)定义类伪指令
gobal:定义全局符号
例如:
.global _start
_start:
<汇编代码>

ascii:ascii数据类型
byte:byte数据类型
word:word数据类型
data:定义数据段
例如:
.data
hello:
.asicc "helloworld"
world:
.byte 0x1

equ:相当于c语言的define,例如:.equ NUM 0x12
align:数据对齐,例如: .align 4 @表示4字节对齐

(2)操作类伪指令
nop:空操作,其作用是延时

ldr:由于mov指令的立即数,不能超过8bit,所以需要使用ldr伪指令。
例如:
ldr r0, =0x2ff @立即数前加=号,不是#号

8.协处理器

协处理器用于执行特定的处理任务,如:数学协处理器用于数字处理,以减轻cpu负担,ARM可以多达16个协处理器,其中CP15是最重要的协处理器。CP15主要通过协处理器寄存器进行访问。其实在x86系列处理器中,x87浮点单元,就是一个协处理器。

mcr指令:通用寄存器--->协处理器
mrc指令: 协处理器--->通用寄存器
例如:
mrc p15,0,r0,c0,c0,0 @读取main id寄存器到r0

如何实现对arm汇编指令的调试?

学习ARM汇编语言时,少不了对ARM汇编指令的调试。作为支持多语言的调试器,gdb自然是较好的选择。调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控。为了在x86平台上执行A... 查看详情

汇编指令及其特点

基础知识指令与伪指令汇编指令:CPU机器指令的助记符,编译后得到1和0组成的机器码,由CPU读取执行伪指令:本质上不是指令,由编译环境提供,谜底在于知道编译过程,最终不会生成机器码不同的ARM风格ARM官方汇编风格:指... 查看详情

arm汇编指令

ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令一、跳转指令跳转指令用于实现程序流程的跳转跳转指令分类Ⅰ.使用专门的跳转指令... 查看详情

arm汇编程序中的伪指令

转自http://blog.chinaunix.net/uid-13701930-id-336459.html 4.1ARM汇编器所支持的伪指令在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他... 查看详情

arm汇编伪指令

...编译器相关的,我们使用gnu工具链,因此学习gnu环境下的汇编伪指令。gnu汇编中的一些符号@用来做注释。可以在行首也可以在代码后面同一行直接跟,和C语言中//类似#做注释,一般放在行首,表示这一行都是注释而不是代码。... 查看详情

arm的伪指令

ARM汇编中有伪指令和伪操作,两者的区别就是:伪指令在汇编器汇编源程序的时候会利用一些指令替代该指令最终被执行,来达到目的。伪操作只在汇编器汇编程序的时候有作用,只是为了帮助程序的执行,并不会被执行。常用... 查看详情

arm常用汇编指令

ARM汇编程序的框架结构.section.data   <初始化的数据>.section.bss   <未初始化的数据>.section.text.global_start_start:   <汇编代码>注意:一般是将上面结构进行简化.text.global _s 查看详情

arm伪指令(代码片段)

...令集中的指令,只是为了编程方便人们定义了伪指令。在汇编时这些指令将会被等效的ARM指令或arm指令的组合代替。编程时可以像其他ARM指令一样使用伪指令,区别是伪指令不像指令一样有对应的机器编码。我今天主要给大家介... 查看详情

arm汇编简单介绍(代码片段)

1.汇编文件说明:  汇编文件以【.s】结尾的文件格式  注释:多行注释/**/  ;单行注释@ 2. 符号说明:  1)汇编指令,一条指令对应一个机器码,完成一定的功能  2)伪指令,一条指令对应多条机器码,... 查看详情

优化系列汇编优化技术:arm架构32位汇编优化及demo

DATE:2021.8.15文章目录1、前言2、Arm汇编架构和ReferenceManuals3、Arm32位寄存器4、ARM指令寻址方式5、ARM指令特点以及优化技巧6、ARM和NEON指令集常用指令汇总7、ARM32位加载数据的两种格式8、ARM32位汇编编写demo9、注意事项10、汇编优化... 查看详情

arm汇编(代码片段)

汇编指令和伪指令的区别汇编指令是cpu机器指令的助记符,代表这个cpu的功能。伪指令本质不是指令,只是和汇编指令写在同一个代码中,它由编译器提供,用于指导编译过程,经过编译后伪指令最终不会生... 查看详情

arm汇编基础详解(代码片段)

目录前言1.GNU汇编语法2.Cortex-A7常用汇编指令2.1处理器内部数据传输指令2.2存储器访问指令2.3压栈和出栈指令(了解)2.4跳转指令2.5算术运算指令2.6逻辑运算指令前言我们在进行嵌入式Linux开发的时候是绝对要掌握基本的AR... 查看详情

嵌入式:arm内嵌汇编及c和arm汇编相互调用

内嵌汇编在C程序中嵌入汇编程序可以实现一些高级语言没有的功能,并可以提高执行效率。armcc和armcpp内嵌汇编器支持完整的ARM指令集;tcc和tcpp用于Thumb指集。但是内嵌汇编器并不支持诸如直接修改PC实现跳转的底层功能。内嵌... 查看详情

ARM - 如何从 C 函数中执行单个汇编指令(机器代码)

】ARM-如何从C函数中执行单个汇编指令(机器代码)【英文标题】:ARM-howtoexecutesingleassemblyinstruction(machinecode)fromwithinaCfunction【发布时间】:2017-11-0919:15:59【问题描述】:我可以通过在运行的C代码中生成有效的本机可执行汇编指... 查看详情

arm汇编指令

转载:http://blog.csdn.net/horizontalview/article/details/507737401.mov的用法在ARM体系中,mov只能用于数据在寄存器之间的移动或者往寄存器中写入立即数。格式如下:mov{条件}{s}目的寄存器,源操作数movR1,R2;2.ldr的用法LDR是将内存中的数载入... 查看详情

[zhuan]arm中的汇编指令

...net/qqliyunpeng/article/details/45116615一.带点的(一般都是ARMGNU伪汇编指令) 1.".text"、".data"、".bss"依次表示的是“以下是代码段”,“以下是初始化数据段”,“以下是未初始化数据段”。2.".global"定义一个 查看详情

arm汇编中ldr伪指令和ldr指令

ARM汇编语言是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str 指令。 比如想把数据从内存中某处读取到寄存器中,只能使用ldr比如:    ldrr0,0x12345678 就是把 0x12345678这个地址中的值存放... 查看详情

linux驱动开发:arm汇编基础(代码片段)

文章目录Linux驱动开发:ARM汇编基础一、GUN汇编语法1.1语句结构:1.2伪操作1.3GUN函数二、ARM的寻址方式2.1立即寻址2.2寄存器寻址2.3寄存器间接寻址2.4基址变址寻址2.5多寄存器寻址2.6相对寻址2.7堆栈寻址三、Cortex-A常用汇编... 查看详情