ARM汇编学习录 1 -基础概念

指令集概述

现阶段有四个不同的指令集

名称概述
ARM3232位指令集
Thumb16位指令集,ARM32子集,提供高密度低功耗
Thumb232位指令集,ARMv6T2 引入.是thumb超集
ARM6464位指令集

note:
ARM某一个时刻只能运行单独ARM指令集或者Thumb指令,通过CPSRT标志位决定.
如何当前执行ARM函数,想要跳转到thumb函数可以通过调用BX切换状态,需要注意的是Thumb函数跳转地址必须末尾是1才能让CPSR自动切换(thumb实际函数由于字节对齐末尾是0,所以很多跳转到thumb地址函数时往往会手动+1在执行BX指令)。

不同指令集的作用:

(1) 此部分为个人理解不具备权威性,ARM32为固定32位长度指令可以访问(R0-R15),但对于轻量化设备来说期望更大的代码密度从而降低对内存的需求。因为推出了编码长度16位的thumb指令,但是只能访问(R0-R7)。对于同一个功能来说往往thumb需要更多指令才能任务(且通用寄存器访问受限),因此整体效率会较低。

(2) 部分功能thumb指令尚未提供的需要切换到ARM模式下执行ARM指令。但是频繁切换ARM与thumb模式成本过高,因为推出了thumb-2指令集。thumb-2指令集兼容16位的thumb指令,也扩展了需要32位指令且可以访问所有寄存器。

(3) ARM64 也是固定长度为32位编码指令集,但是支持64位内存下的执行环境。

条件执行

多架构

其中ARMv7开始提供了三个版本的架构主要提供不同目的:

名称概述
ARMv7-A官方文档
ARMv7-R官方文档
ARMv7-M官方文档

其中ARMv7-A一般用于手机。

状态寄存器

ARMv7中有三个存储当前程序状态的寄存器。

名字简述参考链接
APSR这个是CPSR在用户模式下的视图链接
CPSR用于保存当前程序执行的状态信息。它包括程序状态、条件码、控制标志和一些其他控制位。CPSR中的位表示了当前的程序状态,例如,是否处于特权模式、是否允许中断等。它还包括条件码,用于条件执行指令,根据执行结果决定是否跳转。链接
SPSR当程序触发异常/中断时需要跳转特定函数进行处理,需要保存当前CPSR那么SPSR将作为备份使用。链接

CPSRSPSR寄存器位域图
在这里插入图片描述
APSR寄存器位域图
在这里插入图片描述
ARM中的状态寄存器

特性

ARM既支持大端也支持小端,由其CPSRE标志位决定

通用寄存器

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/150313.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

熔断、限流、降级 —— SpringCloud Alibaba Sentinel

Sentinel 简介 Sentinel 是阿里中间件团队开源的,面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性 Sentinel 提供了两个服务组件…

AAU-net: 用于超声图像中乳腺病变分割的自适应注意力U-Net

AAU-net 期刊分析摘要贡献方法整体框架1.Hybrid Adaptive Attention Module2.Channel Self-Attention Block3.Spatial Self-Attention Block![在这里插入图片描述](https://img-blog.csdnimg.cn/629948402dc647d2b61817db3cd203f1.png) 实验1.消融实验1.1 Architecture Ablatio…

《protobuf》基础语法3

文章目录 默认值更新规则保留字段未知字段 默认值 在反序列化时,若被反序列化的二进制序列中不包含某个字段,则在反序列化时,就会设置对应默认值。不同的类型默认值不同: 类型默认值字符串“”布尔型false数值类型0枚举型0设置了…

基于风驱动优化的BP神经网络(分类应用) - 附代码

基于风驱动优化的BP神经网络(分类应用) - 附代码 文章目录 基于风驱动优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.风驱动优化BP神经网络3.1 BP神经网络参数设置3.2 风驱动算法应用 4.测试结果&#x…

Zookeeper经典应用场景实战(一)

文章目录 1、Zookeeper Java客户端实战1.1、 Zookeeper 原生Java客户端使用1.2、 Curator开源客户端使用 2、 Zookeeper在分布式命名服务中的实战2.1、 分布式API目录2.2、 分布式节点的命名2.3、 分布式的ID生成器 3、Zookeeper实现分布式队列3.1、 设计思路3.2、 使用Apache …

Springboot学生成绩管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 学生成绩管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统 具有完整的源代码和数据库&…

Android:实现手机前后摄像头预览同开

效果展示 一.概述 本博文讲解如何实现手机前后两颗摄像头同时预览并显示 我之前博文《OpenGLES:GLSurfaceView实现Android Camera预览》对单颗摄像头预览做过详细讲解,而前后双摄实现原理其实也并不复杂,粗糙点说就是把单摄像头预览流程写两…

TikTok环保运动:短视频平台上的可持续发展

在当今社交媒体的繁荣时代,TikTok已经成为全球范围内年轻一代最喜爱的短视频分享平台之一。 数以亿计的用户在这里分享他们的创造力、生活片段和喜好。然而,随着全球环保意识的不断增强,TikTok也成为了一个独特的环境,倡导可持续…

Node-RED系列教程-25node-red获取天气

安装节点:node-red-contrib-weather 节点图标如下: 使用说明:node-red-contrib-weather (node) - Node-RED 流程图中填写经度和纬度即可。 演示: json内容: {

【重磅】这就是元宇宙碰撞的后果

筹备了一年多——朋友们,它终于来了! 我们刚刚宣布官方 Aavegotchi x Sandbox 在 X 上共享元宇宙体验。 10 月 25 日在 The Sandbox 上线,有两份可领取的空投。 Gotchi 游戏即将爆发。你们兴奋吗?

氟化钡镜片

氟化钡晶体具有良好的光学透过性能,在0.15μm-14.5μm的光谱范围内,可以用作紫外和红外光学窗口。同时,又具有优良的闪烁性能,成为高能物理与核物理、核医学等领域中重要的晶体材料。 特此记录 anlog 2023年10月7日

Linux 逻辑卷

目录 一、认识 1、概念 2、术语: 1)物理存储设备 2)物理卷 3)卷组 4)PE物理区域 5)逻辑卷 6)LE逻辑区域 7)VGDA卷组描述符区域 二、部署逻辑卷 1、物理卷管理 2、卷组…

防御安全第五次作业

1. 什么是数据认证,有什么作用,有哪些实现的技术手段? 数据认证是指保证数据的真实性、完整性和可信度,以确保数据不被篡改或伪造。其作用包括但不限于: 保护关键数据不被恶意篡改或损坏 提供数据来源的可靠性和安全性…

E: Unable to locate package XXX

问题描述: 当使用 apt-get install XXX 安装包时,出现错误 E: Unable to locate package XXX 解决方法: apt-get update apt-get install XXX

为什么append到父节点后的子节点发生修改,父节点打印出来的也会变化

今天走查前端代码&#xff0c;发现历史代码写出来的不规范&#xff0c;但是他还是在生产运行了很久的代码&#xff0c;仔细思量后发现&#xff0c;其实原理是对的&#xff0c;只是看起来不美观&#xff0c;不易读而已。 废话不说&#xff0c;先上demo代码 <!DOCTYPE html&g…

【Spring Boot】创建一个 Spring Boot 项目

创建一个 Spring Boot 项目 1. 安装插件2. 创建 Spring Boot 项目3. 项目目录介绍和运行注意事项 1. 安装插件 IDEA 中安装 Spring Boot Helper / Spring Assistant / Spring Initializr and Assistant插件才能创建 Spring Boot 项⽬ &#xff08;有时候不用安装&#xff0c;直…

维修派单系统好用吗?如何实现数字化后勤管理?

在当今社会&#xff0c;各种设备和设施的正常运转对于单位和组织来说至关重要。然而&#xff0c;由于各种因素的影响&#xff0c;设备和设施在日常运行过程中难免会出现故障。这时&#xff0c;高效的维修服务就显得尤为重要。而“的修”维修派单系统&#xff0c;就是一种专为维…

2023八股每日一题(九月份)

文章目录 9月13日【JDK、JRE、JVM之间的区别】9月14日【什么是面向对象&#xff1f;】9月15日【和equals比较】9月16日【final 关键字的作用】9月17日【String、StringBuffer、StringBuilder】9月18日【重载和重写的区别】9月19日【接口和抽象类的区别】9月20日【List和Set的区…

力扣第572题 另一棵树的子树 c++深度(DFS)注释版

题目 572. 另一棵树的子树 简单 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有…

数据挖掘(3)特征化

从数据分析角度&#xff0c;DM分为两类&#xff0c;描述式数据挖掘&#xff0c;预测式数据挖掘。描述式数据挖掘是以简介概要的方式描述数据&#xff0c;并提供数据的一般性质。预测式数据挖掘分析数据建立模型并试图预测新数据集的行为。 DM的分类&#xff1a; 描述式DM&#…