arm代码

news2024/11/18 19:28:26

RISC精简指令集

长度和执行周期固定

长度为一条机器指令在计算机占用的内存大小

指令周期为CPU执行一条机器指令所发费的时间(时钟周期由CPU工作频率决定)

CISC复杂指令集

其架构一般用于PC端  X86和X64都是负载指令集CPU

更注重指令的功能性 指令周期和长度都不固定

arm的七种基本工作模式

user非特权模式  大部分任务执行在这种模式

FIQ当一个快速中断产生式将进入这种模式

IRQ当一个通用中断产生时会进入这种模式

Supervisor(svc)当复位或软中断指令执行时会进入这种模式

Abort 存取异常时会进入这种模式

Undef 当执行未定义指令时会进入这种模式

System 使用User相同的寄存器集的特权模式

Cortex-A 特有模式

Monitor 是为了安全而扩展出的用于执行安全监控代码的模式; 也是一种特权模式 

HYP 虚拟化模式,当一个硬件上运行两个OS内核时进入这个模式

R13寄存器  SP指针寄存器 栈中一般存放一些临时数据,也可以用于进行保护现场

R14寄存器 LR链接寄存器 当程序跳转后PC保存跳转后的指令的地址

R15寄存器 PC 程序计数器 始终保存马上就要执行的指令的地址,每次指令执行完毕后PC寄存器的值会自动向下+4  可以手动修改PC寄存器的数值

一条指令的执行过程

1.取址:cpu将PC寄存器的数值通过地址总线传输给存储器,存储器将PC存储的地址位置的指令传输到CPU内存,存放在IR寄存器中

2.译码:IR寄存器的指令交给译码器,对指令进行译码

3.执行:控制器把译码之后的指令交给运算器,运算器再进行对于的运算操作

.text @当前汇编里注释用‘@’ .test声明下面的内容属于文本段内容

.global _start @.global声明_start为一个全局标签

_start:@汇编里的标签,类似于c语言里的函数

mov r1,#1 @汇编命令 将1保存到r1寄存器

stop:     b stop @跳转到stop标签

map.lds是一个链接脚本文件       程序最终链接时,链接器读取链接脚本的内容,按照链接脚本指定的规则将指定的代码存放在内存的不同位置

伪操作  .text .global .end .if .else .endif .data  可以实现和指令类似的功能 占4字节 

数据搬移指令 =     数据移位指令 << >>      数据算数运算指令

+ - * / 位运算指令 & | ~ ^ 数据比较指令

2.跳转指令 3.内存读写指令 4.状态寄存器读写指令 5.软中断指令

<opcode>{<cond>}{s} <Rd>, <shifter_operand>   

<opcode>:指令码    {<cond>}:条件码 {s}:状态位,如果在指令后面加上s,运算结果会影响CPSR条件位 <Rd>:目标寄存器 <shifter_operand>:第一操作数,可寄存器,也可以是立即数

mov:将第一操作数的值保存在目标寄存器

mvn:将第一操作数的值按位取反,将结果保存在目标寄存器

LDR 目标寄存器,=数值     将指定的数据放在目标寄存器中

移位指令  格式:<opcode>{<cond>}{s} <Rd>, <Rn>, <shifter_operand>

将第一操作寄存器的数值移位第二操作数指定的位数,将结果保存在目标寄存器中

LSL:左移运算 低位补0 LSR:右移运算 高位补0 ROR:循环右移:低位移出的值补到高位

位运算指令  格式:<opcode>{<cond>}{s} <Rd>, <Rn>, <shifter_operand>

将第一操作寄存器和第二操作数进行位运算,将结果保存在目标寄存器中

and:与 与0清0 与1不变 orr:或 或1置1 或0不变 eor:异或 相同为0 不同为1

bic:按位清零指令,想将哪一位设置为0,只需要用bic指令给这一位运算一个1即可

算术运算指令 格式:<opcode>{<cond>}{s} <Rd>, <Rn>, <shifter_operand>

将第一操作寄存器的值和第二操作数进行算数运算,结果保存在目标寄存器中

add:加法运算 adc:进行加法运算时需要考虑CPSR的条件位

sub:减法运算 sbc:进行减法运算时需要考虑CPSR的条件位 mul:乘法运算

比较指令 cmp 第一操作数,第二操作寄存器   用于比价数据

就是比较的两个数进行减法运算,并且减法运算的结果会影响到CPSR寄存器的条件位

跳转指令  <opcode>{<cond>} 标签 跳转到指定的标签下

指令码: b:跳转时不影响LR寄存器的值

指令码以及功能 

 向内存中写: str:向内存中写一个字(4字节)的数据 strh:写半个字(2字节)strb:一个字节

从内存读: ldr:从内存读取一个字的数据 ldrh:读取半个字的数据 ldrb:读取一个字节的数据

指令码{条件码} 目标寄存器 [目标地址]

str 目标寄存器 ,[目标地址]:将目标寄存器的数据写入到以目标地址为起始的内存中

ldr 目标寄存器 ,[目标地址]:从以目标地址为起始的内存中读一个字的数据到目标寄存器

向内存写: stm 目标地址,{寄存器列表} 将寄存器列表中每一个寄存器的值都写道目标地址指向的连续空间之中

从内存读 ldm 目标地址,{寄存器列表} 将目标地址指向的连续内存中的数据读到寄存器列表中的寄存器中

ia后缀 先写入然后地址向地址大的方向增长  ib先向地址大的方向增长然后写入数据

da后缀先向指向的内存中存数据,然后寄存器保存的地址往地址小的方向增长

DB后缀先将保存的地址往地址小的方向增长,再往保存的地址内存中存入数据

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

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

相关文章

014-第二代软件开发

第二代软件开发 文章目录 第二代软件开发项目介绍正式开始我们的Debian Qt 软件开发主题色QSS U盘检测QFileSystemWatcher 屏幕键盘LibUSB 使用 总结 关键字&#xff1a; Qt、 Qml、 U盘检测、 屏幕键盘、 LibUSB 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这…

Qt 综合练习小项目--反金币(2/2)

目录 4 选择关卡场景 4.2 背景设置 4.3 创建返回按钮 4.3 返回按钮 4.4 创建选择关卡按钮 4.5 创建翻金币场景 5 翻金币场景 5.1 场景基本设置 5.2 背景设置 5.3 返回按钮 5.4 显示当前关卡 5.5 创建金币背景图片 5.6 创建金币类 5.6.1 创建金币类 MyCoin 5.6.…

GPT系列论文解读:GPT-2

GPT系列 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一系列基于Transformer架构的预训练语言模型&#xff0c;由OpenAI开发。以下是GPT系列的主要模型&#xff1a; GPT&#xff1a;GPT-1是于2018年发布的第一个版本&#xff0c;它使用了12个Transformer…

JavaEE 网络原理——TCP的工作机制(中篇 三次握手和四次挥手)

文章目录 一、TCP 内部工作机制——连接管理1. 连接(三次握手)(1).有连接和确认应答之间的关系(2). 通过客户端和服务器详细描述三次握手 2. 断开连接(四次挥手)(1)讨论“四次握手”中间步骤的合并问题。(2) 根据简单的 TCP 代码解释断开连接(3) 四次挥手中的两个重要的 TCP 状…

计算机网络-计算机网络体系结构-物理层

目录 一、通信基础 通信方式 传输方式 码元 传输率 *二 准则 2.1奈氏准则(奈奎斯特定理) 2.2香农定理 三、信号的编码和调制 *数字数据->数字信号 数字数据->模拟信号 模拟数据->数字信号 模拟数据->模拟信号 *四、数据交换方式 电路交换 报文交换…

【刷题笔记10.5】LeetCode:排序链表

LeetCode&#xff1a;排序链表 一、题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 二、分析 这题咱们默认要求&#xff1a;空间复杂度为O(1)。所以这把咱们用自底向上的方法实现归并排序&#xff0c;则可以达到O(1) 的空间复杂…

[极客大挑战 2019]FinalSQL - 异或盲注

1、这题的关键是找注入点&#xff0c;如果选择用户名、密码作为输入点就麻烦了 2、注入点&#xff1a;按钮&#xff0c;点击就传id&#xff1b;当id1时&#xff0c;提示Click others   可以利用id的特性&#xff0c;构造异或匹配   payload: f"1^(ord(substr((select…

nodejs+vue中医体质的社区居民健康管理系统elementui

可以实现首页、中医体质量表、健康文章、健康视频、我的等&#xff0c;在我的页面可以对医生、小区单元、医疗药品等功能进行操作。目前主要的健康管理系统是以西医为主&#xff0c;而为了传扬中医文化&#xff0c;提高全民健康意识&#xff0c;解决人民日益增长的美好生活需要…

基于SpringBoot的图书进销存管理系统

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 图书类型管理 商品退货管理 客户信息管理 图书添加 客户添加 应收金额 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实…

Ubuntu无法引导启动的修复

TLDR&#xff1a;使用Boot-Repair工具。 Boot-Repair Boot-Repair是一个简单的工具&#xff0c;用于修复您在Ubuntu中可能遇到的常见启动问题&#xff0c;例如在安装Windows或其他Linux发行版后无法启动Ubuntu时&#xff0c;或者在安装Ubuntu后无法启动Windows时&#xff0c;…

[CISCN 2019华北Day2]Web1 - 布尔盲注

考点&#xff1a;布尔盲注【注意&#xff0c;sql中的substr初始位置是1不是0】 1、页面提示用id传参&#xff0c;而且我们发现是post传参 2、我们传了id1后提示“Hello, glzjin wants a girlfriend.“ 3、由于这题直接输入查询字符&#xff0c;可以通过字典爆破过滤&#xff0…

深度学习基础之参数量(3)

一般的CNN网络的参数量估计代码 class ResidualBlock(nn.Module):def __init__(self, in_planes, planes, norm_fngroup, stride1):super(ResidualBlock, self).__init__()print(in_planes, planes, norm_fn, stride)self.conv1 nn.Conv2d(in_planes, planes, kernel_size3, …

人机关系不是物理关系也不是数理关系

人机关系是一种复杂的社会技术系统&#xff0c;涉及到人类和机器、环境之间的相互作用和影响。它不仅限于物理接触和数理规律&#xff0c;同时还包括了思维、情感、意愿等方面的交流和互动。在人机关系中&#xff0c;人类作为使用者和机器作为工具&#xff08;将来可能会上升到…

rust入门一:安装 Hello World

环境&#xff1a; window 11 专业版rust 1.72.1 一、下载安装 直接去官网&#xff1a; https://www.rust-lang.org/tools/install 下载完成后如下&#xff1a; 双击运行一步步安装就行。 如果是更新或卸载&#xff0c;在命令行中运行&#xff1a; rustup update&#xff1a…

ChatGPT基础使用总结

文章目录 一、ChatGPT基础概念大型语言模型LLMs---一种能够以类似人类语言的方式“说话”的软件ChatGPT定义---OpenAI 研发的一款聊天机器人程序&#xff08;2022年GPT-3.5&#xff0c;属于大型语言模型&#xff09;ChatGPT4.0---OpenAI推出了GPT系列的最新模型ChatGPT典型使用…

[GXYCTF2019]禁止套娃 无回显 RCE 过滤__FILE__ dirname等

扫除git 通过githack 获取index.php <?php include "flag.php"; echo "flag在哪里呢&#xff1f;<br>"; if(isset($_GET[exp])){if (!preg_match(/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i, $_GET[exp])) {if(; preg_replace(/[a-z,_]\(…

DevicData-D-XXXXXXXX勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

引言&#xff1a; 在数字时代&#xff0c;数据安全成为一项至关重要的挑战。DevicData-D-XXXXXXXX勒索病毒&#xff08;以下简称DevicData病毒&#xff09;是这场战斗中的新敌人&#xff0c;它能够以毁灭性的方式加密您的数据&#xff0c;迫使您在数据和时间之间做出艰难的选择…

nodejs+vue游戏测评交流系统elementui

可以实现首页、发布招募、公司资讯、我的等&#xff0c;另一方面来说也可以提高在游戏测评交流方面的效率给相关管理人员的工作带来一定的便利。在我的页面可以对游戏攻略、我的收藏管理、实际上如今信息化成为一个未来的趋势或者可以说在当前现代化的城市典范中,发布招募等功能…

[图论]哈尔滨工业大学(哈工大 HIT)学习笔记23-31

视频来源&#xff1a;4.1.1 背景_哔哩哔哩_bilibili 目录 1. 哈密顿图 1.1. 背景 1.2. 哈氏图 2. 邻接矩阵/邻接表 3. 关联矩阵 3.1. 定义 4. 带权图 1. 哈密顿图 1.1. 背景 &#xff08;1&#xff09;以地球为建模&#xff0c;从一个大城市开始遍历其他大城市并且返回…

逆变器下垂控制单机

仿真控制参数 主电路 坐标变换 功率计算 下垂控制 电压电流双闭环控制 结果变量监控 断路器闭合&#xff0c;负载突增 负载突增&#xff0c;有功和无功突增 有功增加&#xff0c;频率减小 无功增加&#xff0c;参考电压减小