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.xdnf.cn/news/150723.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

人机言语交互模型的评估要素

智能客服中的言语交互模型评估要素,主要包括以下几个方面: 有效性:指模型能否准确识别和理解用户的言语意图,以及生成正确和合适的回答。可以通过比较模型生成的回答与人工回答的准确率来评估。流畅性:指模型在回答问…

c语言:通讯录管理系统(动态分配内存版)

前言:在大多数高校内,都是通过设计一个通讯录管理系统来作为c语言课程设计,通过一个具体的系统设计将我们学习过的结构体和函数等知识糅合起来,可以很好的锻炼学生的编程思维,本文旨在为通讯录管理系统的设计提供思路和…

国科大体系结构习题 | 第三章 二进制与逻辑电路

第三章 Q1: A1:(1) 原码: [ − ( 2 63 − 1 , 2 63 − 1 ] [-(2^{63}-1,2^{63}-1] [−(263−1,263−1] 补码: [ − ( 2 63 , 2 63 − 1 ] [-(2^{63},2^{63}-1] [−(263,263−1] …

门窗定制销售小程序商城的作用是什么

门窗属于建材物料行业里重要的体系,生活中需求度非常高,虽然门窗产品使用周期较长,客户旧换新复购率较低,但由于产品属于家家户户都需要,因此市场规模依然是稳增不减。 互联网环境下,客户更习惯于线上获得…

cpp primer plus笔记01-注意事项

cpp尽量以int main()写函数头而不是以main()或者int main(void)或者void main()写。 cpp尽量上图用第4行的注释而不是用第5行注释。 尽量不要引用命名空间比如:using namespace std; 函数体内引用的命名空间会随着函数生命周期结束而失效,放置在全局引用的命名空…

Leetcode901-股票价格跨度

一、前言 本题基于leetcode901股票价格趋势这道题,说一下通过java解决的一些方法。并且解释一下笔者写这道题之前的想法和一些自己遇到的错误。需要注意的是,该题最多调用 next 方法 10^4 次,一般出现该提示说明需要注意时间复杂度。 二、解决思路 ①…

云原生微服务 第六章 Spring Cloud中使用OpenFeign

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 文章目录 系列文章目录前言1、OpenFeign的实现…

SAP从入门到放弃系列之QM目录类别、代码组、选择集维护

目录 一、概念相关内容1.1 目录类别1.2 代码组和代码1.3 选择集和选择集代码 二、系统操作相关内容 一、概念相关内容 1.1 目录类别 目录类别是对定性数据的一种归纳,描述了业务的主题。根据PA的教材中表述,目录类型 0 - 9 和 A - O 由 SAP 定义&#…

如何自学(黑客)网络安全技术————(详细分析学习思路)方法

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学?如何学? 今天给大家分享一下,很多人上来就说想学习黑客&#xff0c…

883. 高斯消元解线性方程组

883. 高斯消元解线性方程组 - AcWing题库 输入一个包含 n 个方程 n 个未知数的线性方程组。 方程组中的系数为实数。 求解这个方程组。 下图为一个包含 m 个方程 n 个未知数的线性方程组示例: 输入格式 第一行包含整数 n。 接下来 n 行,每行包含 n1…

网络安全(黑客)——自学笔记

前言: 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“…

Java卷上天,可以转行干什么?

小刚是某名企里的一位有5年经验的高级Java开发工程师,每天沉重的的工作让他疲惫不堪,让他萌生出想换工作的心理,但是转行其他工作他又不清楚该找什么样的工作 因为JAVA 这几年的更新实在是太太太……快了,JAVA 8 都还没用多久&am…

《第一行代码Andorid》阅读笔记-第六章

第六章 内容提供器 在上一章中我们学了Android数据持久化的技术,包括文件存储、SharedPreferences存储以及数据库存储。使用这些持久化技术所保存的数据都只能在当前应用程序中访问。 虽然文件和SharedPreferences存储中提供了MODE_WORLD_READABLE和MODE_WORLD_WRI…

Vue中如何进行分布式任务调度与定时任务管理

在Vue中进行分布式任务调度与定时任务管理 分布式任务调度和定时任务管理是许多应用程序中的关键功能之一。它们用于执行周期性的、异步的、重复的任务,例如数据备份、邮件发送、定时报告生成等。在Vue.js应用中,我们可以结合后端服务实现分布式任务调度…

苹果手机的祛魅时刻,国产厂商的颠覆征程

“iPhone翻车了?”有网友如此质疑。 发布未满一个月,iPhone 15系列多次因负面问题登上热搜。 首先曝出钛金属边框容易沾染指纹的情况,尚未涉及功能性方面,但后续接连曝出发热严重、电池循环次数低、外放破音、Wi-Fi链接缓慢的问…

进制转换

1.十进制转化为其他进制 这里可能将十进制转化为14或15进制,所以10用A,11用B表示,依次类推。 2.其他进制转化为10进制: 将其他进制下的数转化为10进制下的数,通常采用秦九韶算法。 上代码: #include &…

新手选MT4还是MT5,anzo capital昂首资本建议选择MT4,一个原因

在交易中就订单执行策略而言,MT4和MT5哪个更好,相信很多交易者和,anzo capital昂首资本一样很难做出判断。在MT5中,虽然开发人员对发送订单的流程进行了额外的复杂化,同时MT5在订单执行政策方面的优势在于其能够调整全…

stm32 - 中断/定时器

stm32 - 中断/定时器 概念时钟树定时器类型基准时钟(系统时钟)预分频器 - 时基单元CNT计数器 - 时基单元自动重装寄存器 - 时基单元基本定时器结构通用定时器计数器模式内外时钟源选择 定时中断基本结构时序预分频器时序计数器时序 例子通用定时器 - 内部…

OpenCV4(C++) —— 图像数据类型转换和颜色模型转换

文章目录 一、图像数据类型转换二、颜色模型转换三、通道的分离和融合 一、图像数据类型转换 OpenCV中使用imread读取一张彩色图像时,默认采用的是BGR通道和整数类型(0-255,CV_8U)。 在某些情况下,会将整数类型(0-255)转换为浮点类型(0-1)&a…

Windows下Tensorflow docker python开发环境搭建

前置条件 windows10 更新到较新的版本,硬件支持Hyper-V。 参考:https://learn.microsoft.com/zh-cn/windows/wsl/install 启用WSL 在Powershell中输入如下指令: dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsys…