ARM内部寄存器与常用汇编指令(ARM汇编)

1 地址空间&RISC与CISC

CISC:复杂指令集计算机

RISC:精简指令集计算机

RISC 与 CISC 的比较

2 ARM内部寄存器

3 ARM汇编概述

RISC精简指令可以大致分为几类:

1.内存读写

2.运算

3.跳转/分支

4.比较

而指令的集合就称之为"指令集"。

ARM公司一开始推出的指令集就是ARM指令集,每条指令占32位,高效,但是太占空间。于是后面又推出Thumb指令集,每条指令占16位,节省空间,但是效率没有ARM指令集高。

立即数

4 ARM汇编模拟器VisUAL

下载地址(需要梯子): https://salmanarif.bitbucket.io/visual/downloads.html

5 内存访问指令

语法

LDR与STR

LDM与STM

reglist:低标号Register对应低地址(原则)

下面以STM为例:(32位以4字节为一个地址,所以地址每次加4)

关于满减栈的知识补充:

ARM:什么是满减栈?为何选择满减栈?-CSDN博客

6 数据处理指令

掌握以下指令就足够了:

程序状态寄存器的位域

有些指令在执行后会在程序状态寄存器中改变对应位(以CMP为例):

而在程序状态寄存器中对应位改变后,后续指令可以通过在指令后加后缀来判断程序状态寄存器对应位:

以EQ为例,判断Z位是否为1:Z位为1,则执行"MOV R0,#2"指令

当更改R1的值会发生什么呢?

7 跳转指令

跳转 指令 的核心指令是B和BL:

B:Branch,跳转

BL :Branch with Link,跳转前先把返回地址保存在LR寄存器中

以指令B为例,手写一个Delay函数:

接下来以BL为例,看代码能不能执行到"MOV R1,#1"处(跳转Delay函数之后还能不能回来):

BL指令会将返回地址保存在LR寄存器中,当执行MOV PC,LR就会跳转回来了。

除了B指令和BL指令,也可以通过直接给PC赋值的方式跳转:

8 下节

ARM体系结构解析:PC寄存器机制、三级流水线与C/汇编交互全揭秘-CSDN博客

相关推荐
Arenaschi1 小时前
国产麒麟X86结构和arm架构的区别
arm开发
EnglishJun8 小时前
ARM嵌入式学习(二十一)--- Platform总线结合dts、gpio子系统、中断和错误处理
arm开发·学习
AI服务老曹10 小时前
异构计算时代的安防底座:基于 x86/ARM 双架构与多芯片适配的 AI 视频云平台架构解析
arm开发·人工智能·架构
落樱弥城11 小时前
Arm Mali GPU架构
arm开发·架构
The Mr.Nobody11 小时前
基于STM32F407的 TFTP Server
arm开发·stm32·嵌入式硬件
飞凌嵌入式11 小时前
如何用JishuShell在RK3588核心板上快速部署OpenClaw?
arm开发·人工智能·嵌入式硬件·openclaw
ai产品老杨11 小时前
异构计算时代的安防底座:基于 x86/ARM 双架构与多芯片适配的 AI 视频云平台架构解析
arm开发·人工智能·架构
ai产品老杨1 天前
异构计算时代的视频底座:基于 ZLMediaKit 与 Spring Boot 的 X86/ARM 跨平台架构解析
arm开发·spring boot·音视频
路溪非溪1 天前
如何使用sysfs来排查驱动问题
linux·arm开发·驱动开发
独小乐1 天前
012.整体框架适配SDRAM|千篇笔记实现嵌入式全栈/裸机篇
c语言·汇编·笔记·单片机·嵌入式硬件·arm·gnu