arm汇编指令流程图(arm 汇编指令)

:暂无数据 2026-09-06 18:40:07 0

arm汇编指令流程图(arm 汇编指令)

大家好,如果您还对arm汇编指令流程图不太了解,没有关系,今天就由本站为大家分享arm汇编指令流程图的知识,包括arm 汇编指令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

arm 汇编指令

***隐藏网址***

替代方案是使用一组新的指令,包括CSEL(Conditional Select), CINC(Conditional Increase)和CSET(Conditional Set)等,以CSEL为例,它的用法是这样的:

CSEL 《Xd》, 《Xn》, 《Xm》, 《cond》
意思是如果条件(cond)满足,就选择(sel)Xn作为Xd,否则选择Xm作为Xd。比如下面这条语句:

CSEL X0, X0, X1, ge

表示的是如果X0》=X1(ge - greater or equal),那么X0=X0(保持不变),否则X0=X1。虽然比IT指令块的语法看起来要直观一些,但比起IT指令块能表达的层级关系,还是稍微弱了一点。

mov 寄存器、 立即数 mov r0,#0x1 r0 = 0x1
mov 寄存器、 寄存器 mov r2, r1 r2 = r1

***隐藏网址***
instruction value of x0
mov x0, #0x1f88 | 0x1f88
movk x0, #0xb7fb, lsl #16 | 0xb7fb1f88
movk x0, #0x7f, lsl #32 | 0x7fb7fb1f88

;ADD加法指令
mov r0, #1
mov r1, #1
add r2, r1, r0  ;r2 = r1 + r0
add r2, r1, #2  ;r2 = r1 + 2
;ADC带进位加法指令,即除了加两个数以外,还要把CPSR的C值也要带进来
ADDS R0,R1,R2; R0=R1+R2,ADDS中S表示把进位结果写入CPSR
ADC R5,R3,R4 ;R5=R3+R4+C

;SUB减法指令
mov r0, #5
mov r1, #3
sub r2, r0, r1  ;r2 = r0 - r1
sub r2, r1, #2  ;r2 = r1 - 2
;SBC带进位减法指令,即除了加两个数以外,还要把CPSR的C值也要带进来,类似ADC
SUBS R0,R1,R2; R0=R1-R2,SUBS中S表示把进位结果写入CPSR
SBC R5,R3,R4 ;R5=R3-R4-C

AND R0,R1,R2; R0=R1 & R2
AND R0,R1,#0xFF ;R0=R1 & 0xFF

ORR R0,R1,R2; R0=R1 | R2
ORR R0,R1,#0xFF ;R0=R1 | 0xFF

MADD Rd, Rn, Rm, Ra =》 Rd = Ra + Rn * Rm

MSUB Rd, Rn, Rm, Ra =》 Rd = Ra - Rn * Rm

***隐藏网址***
Signed Multiply-Add Long multiplies two 32-bit register values, adds a 64-bit register value, and writes the result to the 64-bit destination register.
SMADDL Xd, Wn, Wm, Xa
Xd = Xa + Wn * Wm.

LSR(Logical shift right),逻辑右移或者说是无符号的右移。LSR #n操作可以对寄存器的内容进行逻辑右移n位,左边被移走的n位全部被清零
MOV R1,#0X80000001
LSR R0,R1,#3; R0 = (unsigned)R1》》 3

ARM指令的一般编码格式如下

你这个是ARM7 CPU的指令码格式,早期的ARM架构,是ARMV4T,而且只是其数据处理类指令的指令编码格式(4位编码,配合这其余位,如I位,Rn,Rm,第二操作数等编码位,可以编码出很多条数据处理指令。)。所以说,并不是25-27位没有使用。在其它类型的指令中就有使用25-27,如图2.

                                          图1 ARM7 CPU数据处理指令的编码格式。

                             图2 ARM7 CPU的单字节传输(LAD,STR)指令编码格式

具体请自己查找官方手册,在arm官网可以找到对应资料。

ARM 体系结构参考手册ARMv7-A和ARMv7-R版:DDI0406C_C_arm_architecture_reference_manual.pdf  的A5章节,193页起都是讲这个的。

ARM 汇编语言指令

当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。每一条ARM指令包含4位的条件码,位于指令的最高4位。条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。在16种条件标志码中,只有15种可以使用,如表所示,第16种(1111)为系统保留,暂时不能使用。 指令的条件码条件码 助记符后缀 标 志 含 义0000 EQ Z置位 相等0001 NE Z清零 不相等0010 CS C置位 无符号数大于或等于0011 CC C清零 无符号数小于0100 MI N置位 负数0101 PL N清零 正数或零0110 VS V置位 溢出0111 VC V清零 未溢出1000 HI C置位Z清零 无符号数大于1001 LS C清零Z置位 无符号数小于或等于1010 GE N等于V 带符号数大于或等于1011 LT N不等于V 带符号数小于1100 GT Z清零且(N等于V) 带符号数大于1101 LE Z置位或(N不等于V) 带符号数小于或等于1110 AL 忽略 无条件执行

arm 汇编 指令看不太懂,高手解释下

的确,书本上都有!
BEQ
相等则跳转,B跳转,EQ相等(,前面有CMP)
LDRCC
小于则装载内存数据到寄存器,LDR装载,CC小于
STRCC
BCC类似
《助记符》{《执行条件》}{S}
《Rd》,《Rn》{,第2操作数}
有S则表示影响CPSR寄存器的值
条件码助记符:
EQ
相等
NE
不相等
CS/HS
无符号数大于或等于
CC/LO
无符号数小于
MI
负数
PL
正数或零
VS
溢出
VC
没有溢出
HI
无符号数大于
LS
无符号数小于或等于
GE
有符号数大于或等于
LT
有符号数小于
GT
有符号数大于
LE
有符号数小于或等于
AL
无条件执行,跟不写一样
|Image$$RO$$Limit|:表示RO区末地址后面的地址,即RW数据源的起始地址
|Image$$RW$$Base|:RW区在RAM里的执行区起始地址,也就是编译器选项RW_Base指定的地址。
|Image$$ZI$$Base|:ZI区在RAM里面的起始地址
|Image$$ZI$$Limit|:ZI区在RAM里面的结束地址后面的一个地址

有程序段如下,实现下面流程图,试补充编写ARM汇编代码(8分)

mov r0, # 15
mov r1, # 9
start:
dd1:
cmp r0, r1
beq stop
lttee hi
subhi r0, r0, r1
bhi dd1
subls r1, r1, r0
bls dd1
stop:
b stop

结合Bootloader的相关知识,并参考ARM的汇编指令,分析下面的Bootloader代码

我的水平也一般,注释仅供参考
.globl _start
_start: b reset
reset: //复位起始
ldr r0, IC_BASE //将芯片基址载入R0寄存器中
mov r1, #0x00
str r1, //初始化ICMR寄存器为0
ldr r0, PWR_BASE //将电源管理基址载入R0寄存器中
ldr r1, cpuspeed //设定CPU时钟
str r1, //将设定的时钟载入PPCR寄存器中(我猜测是使能该时钟)
bl ledinit //初始化LED
bl memsetup //初始化外部Memory设置
//该段应该是完成复位控制器的配置,由于没有具体的CPU手册,因此无法知道是完成了什么配置,建议你对照CPU手册查看一下,下面几段相同
ldr r0, RST_BASE //载入复位控制器基址
ldr r1, //读取RCSR寄存器的值到R1中
and r1, r1, #0x0f //保留R1的低四位
teq r1, #0x08 //若R1的第3位不为0,则跳转至normal_boot,否则继续执行
bne normal_boot /* no, continue booting */
mov r1, #0x08
str r1, ; //将RCSR寄存器设置为0x08
/* handle Power Manager Sleep Status Register (PSSR), see 9.5.7.5 from */
ldr r1, //载入PSSR寄存器的值到R1中
orr r1, r1, #0x08
orr r1, r1, #0x10 //将R1寄存器的值的第3、4位置1
str r1, //将该值写回PSSR寄存器

/* get the value from the PSPR and jump to it */
ldr r0, PWR_BASE //读取电源管理基址到R0中
ldr r1, //读取PSPR内的值(我估计是一个地址)
mov pc, r1 //跳转至读取的地址
normal_boot:
mov r7, #0x1000
mov r6, r7, lsl #8 /* 4k 《《 2^8 = 1MB */ //将0x1000左移8位放入R6中
ldr r5, BLOB_START //载入BLOB_START的内容到R5中
relocate: //重定位,为代码复制做准备
adr r0, _start //获取_start的地址
add r2, r0, #(64 * 1024) /* blob maximum size is 64kB */ //取R0地址后64KB的代码
add r0, r0, #0x400 /* skip first 1024 bytes */ //跳过起始的1K代码不复制
ldr r1, BLOB_START //设定目标地址到R1中
/* r0 = source address
* r1 = target address
* r2 = source end address
*/
copy_loop: //复制代码。每次复制8Byte
ldmia r0!, {r3-r10}
stmia r1!, {r3-r10}
cmp r0, r2
ble copy_loop
bl led_off //复制完成关闭LED指示
ldr r0, BLOB_START //获取程序入口
mov pc, r0 //跳转至程序入口,第一阶段初始化完成

关于本次arm汇编指令流程图和arm 汇编指令的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

arm汇编指令流程图(arm 汇编指令)

本文编辑:admin

更多文章:


display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)

display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)

大家好,关于display flex 自动换行很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于overflow-y:hidden;overflow-x:auto;无效解决方法的知识点,相信应该可以解决大家的一些困惑和问题,如

2026年9月7日 11:00

小程序免认证源码(小程序源码都能干嘛)

小程序免认证源码(小程序源码都能干嘛)

本篇文章给大家谈谈小程序免认证源码,以及小程序源码都能干嘛对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月7日 10:50

timestamp without time zone(Postgresql中to_date()函数使用问题)

timestamp without time zone(Postgresql中to_date()函数使用问题)

各位老铁们好,相信很多人对timestamp without time zone都不是特别的了解,因此呢,今天就来为大家分享下关于timestamp without time zone以及Postgresql中to_date()函数使用问题

2026年9月7日 09:40

网页制作代码特效大全(谁知道网页打字机特效的代码)

网页制作代码特效大全(谁知道网页打字机特效的代码)

大家好,如果您还对网页制作代码特效大全不太了解,没有关系,今天就由本站为大家分享网页制作代码特效大全的知识,包括谁知道网页打字机特效的代码的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年9月7日 04:20

下载mysql的步骤(win10安装mysql的步骤和方法)

下载mysql的步骤(win10安装mysql的步骤和方法)

各位老铁们,大家好,今天由我来为大家分享下载mysql的步骤,以及win10安装mysql的步骤和方法的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年9月7日 04:10

webstorm怎么读(webstorm文件结构怎么打开)

webstorm怎么读(webstorm文件结构怎么打开)

本篇文章给大家谈谈webstorm怎么读,以及webstorm文件结构怎么打开对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 03:50

nio新特性(Java NIO与IO的区别和比较)

nio新特性(Java NIO与IO的区别和比较)

各位老铁们好,相信很多人对nio新特性都不是特别的了解,因此呢,今天就来为大家分享下关于nio新特性以及Java NIO与IO的区别和比较的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年9月7日 03:40

checked in(check in和check out的区别)

checked in(check in和check out的区别)

本篇文章给大家谈谈checked in,以及check in和check out的区别对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月7日 01:20

java经典上机编程题(java上机题 请问这道题应该怎么写)

java经典上机编程题(java上机题 请问这道题应该怎么写)

大家好,java经典上机编程题相信很多的网友都不是很明白,包括java上机题 请问这道题应该怎么写也是一样,不过没有关系,接下来就来为大家分享关于java经典上机编程题和java上机题 请问这道题应该怎么写的一些知识点,大家可以关注收藏,免

2026年9月7日 01:10

影视剧中有哪些剧情颠覆了你的三观?金庸的武侠小说《白马啸西风》为什么没有被拍成电影或者电视剧

影视剧中有哪些剧情颠覆了你的三观?金庸的武侠小说《白马啸西风》为什么没有被拍成电影或者电视剧

各位老铁们,大家好,今天由我来为大家分享白马影视,以及影视剧中有哪些剧情颠覆了你的三观的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年9月7日 00:30

最近更新

display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026-09-07 11:00:06 浏览:0
oppo find x3 pro配置(oppofindx3pro是否支持双卡双待介绍)
2026-09-07 10:10:21 浏览:0
热门文章

yoga pro 14s carbon(yoga14s接口类型)
2026-07-03 17:50:01 浏览:5
domino directory(帮我翻译一下Recipient’s Domino Directory entry does not specify a valid Notes mail file)
2026-08-03 19:20:01 浏览:4
标签列表