当前位置: 首页 > news >正文

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 下节

相关文章:

  • oracle中OS BLOCK的含义
  • QGIS如何制作人口流向图
  • 蓝桥杯好题推荐---扫雷
  • Nexus File类型Blob Stores迁移至Minio操作指南(上)
  • 深入理解静态与动态代理设计模式:从理论到实践
  • 泛目录程序:无需数据库的高效站群解决方案
  • 【STM32】从新建一个工程开始:STM32 新建工程的详细步骤
  • 解决 Redis 后台持久化失败的问题:内存不足导致 fork 失败
  • stm32 L432KC(mbed)入门第一课
  • 使用Arduino、ESP8266和GPS在Google地图上追踪车辆
  • 户外光伏气象站:精准监测气象数据,助力光伏电站高效运行
  • std::invoke详解
  • C语言中的流程控制语句
  • PN结和三极管
  • 基于 RWA 模型与 AI - Agent 协同的企业级 aPAAS 架构设计
  • 编译原理:语法分析程序【附源码和超详细注释】
  • 【Unity网络同步框架 - Nakama研究(三)】
  • PostgreSQL 和 MySQL 区别
  • C#中多态性核心讲解
  • S7-1200 G2移植旧版本S7-1200程序的具体方法示例
  • 泽连斯基与美国副总统及国务卿会谈,讨论伊斯坦布尔谈判等问题
  • 陕西:未来一周高温持续,继续发布冬小麦干热风风险预警
  • 倒票“黄牛”屡禁不绝怎么破?业内:强化文旅市场票务公开制度
  • 新闻1+1丨强对流天气频繁组团来袭,该如何更好应对?
  • 病愈出院、跳大神消灾也办酒,新华每日电讯:农村滥办酒席何时休
  • 新修订的《餐饮业促进和经营管理办法》公布,商务部解读