android 汇编 参数,安卓ARM汇编基础知识

ARM 是 Advanced RISC Machine 的缩写,可以理解为一种处理器的架构,还可以将它作为一套完整的处理器指令集。RISC(Reduced Instruction Set Computing) 精简指令集计算机:一种执行较少类型计算机指令的微处理器。

处理器指令集: 计算机处理命令的指令集合。ARM 指令集是一组提供一整套运算的 32 位指令。

ARM 处理器是典型的 RISC 处理器,因为它们执行的是加载/存储体系结构。只有加载和存储指令才能访问内存。数据处理指令只操作寄存器的内容。

目前市面上的安卓手机绝大多数的CPU都是基于ARM架构的,但是也有少数采用了英特尔X86架构的CPU。

对于使用ARM处理器的 Android手机来说,它最终会生成相应的ARM elf (so)可执行文件,分析软件的核心功能只能从 elf(so)文件入手。

1、ARM汇编语言(armasm)是一门低级语言,它与系统的底层打交道,直接访问底层硬件资源。

2、ARM汇编语言与C语言共用同一套原生程序开发的API接口。

3、寄存器是CPU的组成部分,是和存储器交互的桥梁,它们可用来暂存指令、数据和地址。

ARM寄存器

ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。

ARM寄存器分为2类,普通寄存器和状态寄存器。通用寄存器总共16种,分别为R0到R15;状态寄存器共2种,分别为CPSR和SPSR。

16种通用寄存器:(总个数31)R15 别名PC(program counter)程序计数器:保存当前正在执行的指令在内存中的地址,当指令执行结束后,PC的值自动+1,即自动指向下一条即将执行的指令在内存中的位置。因为当程序通过汇编指令完成了对PC寄存器的赋值操作的时候,其实就是完成了一次无条件跳转。

R14 别名LR(linked register)链接寄存器:用于存放子程序的返回地址,它是ARM程序实现子程序调用的关键所在。

R13 别名SP(stack pointer)栈指针寄存器:用于存放堆栈的栈顶地址的。当我们进行出栈和入栈的时候,都将根据该寄存器的值来决定访问内存的位置(即出入栈的内存位置),同时在出栈和入栈操作完成后,SP寄存器的值也应该相应增加或减少。

R0-R12是普通的数据寄存器,可用于任何地方。R12 内部调用暂时寄存器 。 被调用函数在返回之前不必恢复。

R4-R11 常用来存放函数的局部变量 。 被调用函数返回之前必须恢复这些寄存器的值。

R0-R3 常用来传入函数参数,传出函数返回值

2种状态寄存器:(总个数6)CPSR(1个)(current program status register)状态寄存器:用于保存程序的当前状态。

SPSR(5个)(saved program status register)备份程序状态寄存器: 异常返回后恢复异常发生时的工作状态。

上面的知识点有点多,需要记住 ARM微处理器有37个寄存器, 其中 31个通用寄存器 总共16种(R0-R15),6个状态寄存器 总共两种(CPSR,SPSR)

ARM处理器状态

ARM汇编下有两种工作状态, 一般情况下是ARM状态,带状态切换的跳转指令BX,当地址值的最后一位是1时,进入Thumb状态。ARM状态:32位,ARM状态执行字对齐的32位ARM指令。

Thumb状态,16位,执行半字对齐的16位指令。

Thumb-2状态,新的thumb-2内核技术兼有16位及32位指令,实现了更高的性能,更有效的功耗及更少地占用内存

调试状态,ARM处理器停机时进入调试状态。ARM和Thumb两种状态之间的切换不影响处理器的工作模式和寄存器的内容。

ARM处理器在处理异常时,不管处理器处于什么状态,则都将切换到ARM状态

ARM处理器工作模式

除用户模式之外,其他所有模式统称为特权模式。它们具有对系统资源的完全访问权限,并可随意更改模式。

需要任务保护的应用程序通常在用户模式下执行。有些嵌入式应用程序可能完 全运行在超级用户模式或系统模式下。

进入除用户模式之外的模式是为了处理异常或访问特许资源。

1460000023739225

ARM指令集简介

ARM指令集是指计算机ARM操作指令系统,在ARM中有两种方式可以实现程序的跳转:一种是跳转指令

另一种是直接向PC寄存器(R15)中写入目标地址值

所有 ARM 指令的长度都是 32 位。这些指令是按字对齐方式存储的,因此在 ARM 状态下,指令地址的两个最低有效位始终为零。

而 Thumb、Thumb-2 指令的长度是 16 位或 32 位。这些指令按半字对齐方式存储。其中有些指令使用最低有效位来确定跳转到的目标代码是 Thumb 代码还是 ARM 代码。ARM处理器指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。

跳转指令

此类指令用于:向后跳转以构成循环

在条件结构中向前跳转

跳转到子例程

在 ARM 状态和 Thumb 状态之间转换处理器状态

数据处理指令

此类指令用于对通用寄存器执行运算,它们可对两个寄存器的内容执行加法、 减法或按位逻辑等运算,并将结果存放到第三个寄存器中。它们还可以对单个寄存器中的值执行运算,或者对寄存器中的值与指令中提供的常数执行运算。

寄存器加载和存储指令

用于从内存加载单个寄存器的值,或者在内存中存储单个寄存器的值

协处理器指令

此类指令支持一种用于扩展 ARM 体系结构的通用方式。用于减轻系统微处理器的特定处理任务。ARM微处理器可支持多达16个协处理器用于各种协处理操作。

程序状态寄存器(PSR)处理指令

用于在程序状态寄存器和通用寄存器之间传送数据,程序状态寄存器访问指令包括以下两条:MRS 程序状态寄存器到通用寄存器的数据传送指令

MSR 通用寄存器到程序状态寄存器的数据传送指令

异常产生指令

ARM 微处理器所支持的异常指令有如下两条:SWI 软件中断指令

BKPT 断点中断指令

1460000023739226

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

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

相关文章

移动推送消息送达常见问题与解决办法

摘要: 一、 收到重复的推送内容 * 收到重复的推送内容,排除了业务自身的推送逻辑之外,重点介绍一下部分机型多渠道推送可能带来的重复推送问题。 * 对于Android系统,对于设备已经在某些三方系统中注册过,并且通过该三方…

开发经验分享_02_解决问题3步走(实战)

接上一篇:开发经验分享_01_遇到问题3步走(思路实战) https://gblfy.blog.csdn.net/article/details/103413993 文章目录一、透过现象看本质1. 想几种可能导致此问题的业务场景2. 选择概率最多的业务场景二、Debug模式走起1. 重启,以debug模式启动2. 预判…

帮助你驾驭 Kubernetes 的 4 个工具 | Linux 中国

学习如何驾驭 Kubernetes 比如何建造它更重要,这些工具可以帮助你更快上路。-- Scott Mccarty译者|Xinyu Wang来源|Linux中国在本系列的第三篇文章中,Kubernetes 基础:首先学习如何使用,我强调你应该学会使用 Kubernetes&#xff…

三大新功能发布 阿里云短视频SDK玩法多 优惠更多

摘要: 近日,阿里云短视频SDK进行了重大升级,对视频滤镜和视频特效方面进行了功能更新,助力用户快速接入带来更多的玩法。 短视频SDK介绍 短视频SDK提供短视频录制、导入和编辑的高级功能,支持多种分辨率选择、实时美颜…

html asp 日历_全球第一本《2021世界艺术日历》,正式发售!

原标题:全球第一本《2021世界艺术日历》,正式发售!艺术,人类精神文明的美丽结晶。作为一名资深艺术爱好者,多希望 每天都能和名画为伴,接受各个时期艺术佳作的熏陶。 记得2020年的开头, 我买了好…

android ui怎么用ps切图,怎样用ps对设计稿进行一键切图?

切图这项流程在制作页面中所站的地位是很高的,不能小看了切图,肯定有人会说:我觉得切图很简单啊,唰,一刀,唰,一刀...如果你觉得这样子的话,我就只能呵呵了。为啥我说切图地位很重要了…

阿里云产品头条(2018年1月刊)

摘要: 一、 新产品发布1、 弹性高性能计算 商业化 发布弹性高性能计算(E-HPC)基于阿里云基础设施,为用户提供一站式公共云HPC服务,面向教育科研、企事业单位和个人提供快捷、弹性、安全和与阿里云产品互通的技术计算云…

三星计划替换所有日产半导体材料;美企过度响应“禁令”,华为被曝祭出数亿索赔;苹果iPhone 11发布日期刚刚泄露...

戳蓝字“CSDN云计算”关注我们哦!嗨,大家好,重磅君带来的【云重磅】特别栏目,如期而至,每周五第一时间为大家带来重磅新闻。把握技术风向标,了解行业应用与实践,就交给我重磅君吧!重…

button hover逐渐变色_两当水库界桩@产品长久不变色 - 两当安全防护

河北合诺电力设备有限公司成立于2009年,位于河北省石家庄市新华区,是一家富有高科技生产力与完善服务体系的综合性企业。公司集科研、生产、销售及服务于一体,厂区占地50余亩,现有员工135人,专业资质技术人员26人&…

I+关系网络分析发布,提供完整的可视化分析和关系引擎功能

摘要: I关系网络分析是以OLP模型为核心,面向业务快速建模,为开发者和终端用户提供大数据关系计算引擎(含API服务)和可视化交互分析能力,面向安防、关税、银行、保险、互联网等提供的产品化方案。目前&#…

android apk 签名密码,Android 自动apk签名命令(配置签名信息,不再次输入密码确认)...

两种签名方式供参考:1.不使用android sdk 使用jdk 中的jarsigner签名jarsigner -verbose \-keystore ${WORKSPACE}/app/key.jks \-storepass "storepass" \-keypass "keypass" \-signedjar ${WORKSPACE}/app/jiagu/upload_legu_signed.apk \${W…

赞,全网开发者都在学的 26 门 AI 课程!

整理 | Jane出品 | AI科技大本营(ID:rgznai100)免费的在线学习课程一直是大多数人学习 AI 知识和技能的方式之一。今天,基于 Github 上一位小姐姐 Chip Huyen 分享的 10 门机器学习课程,AI科技大本营将这份收藏大礼包进…

开发经验分享_03_解决问题3步走(思路)

上一篇:(企业内部)开发经验分享_02_解决问题3步走(实战) https://gblfy.blog.csdn.net/article/details/103414259 文章目录思路① 自己动脑解决② 百度、问同事(要有自己的见解),定方向③ 最后主动咨询领导(了解谁擅长什么&am…

结构损伤检测与智能诊断 陈长征_宿迁厂房安全检测多少钱介绍说明

检测与鉴定1. 混凝土类材料(混凝土试块和混凝土芯样抗压强度、砂浆试块抗压强度)试验;2. 钢筋及接头(钢筋原材和焊接接头、钢筋后锚固件)力学工艺性能试验;3. 混凝土结构检测混凝土预制构件结构性能检测、钻芯法检测混凝土强度、混凝土回弹法检测强度、钢…

android api接口文档,API 接口文档

API 接口文档接口类说明本文档所有接口所涉及的相关类及说明如下:接口说明GsManagerSDK 功能接口类,用于调用个数相关功能GsConfigSDK 配置接口类,用于设置个数相关参数(注意:GsConfig 配置类需要在 SDK 初始化之前配置。)获取 Gs…

阿里云ECS开放批量创建实例接口,实现弹性资源的创建

摘要:为了更方便的实现弹性的资源创建,方便用户一次运行多台ECS按量实例来完成应用的开发和部署,阿里云开放了ECS的批量创建实例接口RunInstances,可以单次最多创建100台实例,避免重复调用和创建。点此查看原文&#x…

开发经验分享_05_葫芦画瓢

接上一篇:(企业内部)开发经验分享_04_快速熟悉程序(思路) https://gblfy.blog.csdn.net/article/details/103344458 文章目录一、页面布局/分割1. 观其形2. 页面组件化3. 布局心中有数二、垒积木三、模拟调试1. 固定的数据功能2. 页面固定的数据功能3. 动态数据功能…

项目是如何死掉的?太过真实!

戳蓝字“CSDN云计算”关注我们哦!做项目多年,见过成功的项目,也见过太多失败的项目;成功或失败,都是项目的宿命。我总结了项目失败的几点要素,供有志于将项目做失败的同学参考。绝大多数人在面对失败的可能…

igmp是哪个层协议_通俗易懂网络协议(IP)

之前写过一篇《通俗易懂TCP/IP(概述)》,广受欢迎和好评,有网友催更,便抽空续写IP章节,回应粉丝期待。TCP/IP网络模型TCP/IP网络模型分为4层,自下而上分布为链路层(又叫网络接口层)、网络层、传输层、应用层。链路层&am…

opporeno3pro可以刷鸿蒙系统吗,华为P40放大招!鸿蒙系统+120Hz+徕卡五摄,明年2月发布!...

自OPPO副总裁沈义人在微博上多番爆料后,机粉们对于OPPO Reno3 Pro的期待值上升到了一个新高度。在期待了近一个月后,12月26日,全新OPPO Reno3系列将正式发布——OPPO Reno3 Pro这次真的来了!而与此同时,OPPO也在近期官…