ARM 相关概念2

news2024/11/26 8:28:02

一、汇编中三种符号(汇编指令、伪指令、伪操作)

二、汇编基本格式

三、数据操作指令

3.1 数据搬移指令mov/mvn

① 示例

② 立即数

0xff000000 =====>判断的数
1111 1111 0000 0000 0000 0000 0000 0000   =====>判断的数
0000 0000 0000 0000 0000 0000 1111 1111  =====>找到0xff这个数 =====> 循环右移8位

0xf0000000 =====>判断的数
1111 0000 0000 0000 0000 0000 0000 0000   =====>判断的数
0000 0000 0000 0000 0000 0000 0000 1111  =====>找到0xf这个数 =====> 循环右移4位

0xf000000f =====>判断的数
1111 0000 0000 0000 0000 0000 0000 1111   =====>判断的数
0000 0000 0000 0000 0000 0000 1111 1111  =====>找到0xff这个数 =====> 循环右移4位

0x1FE00000=====>判断的数
0001 1111 1110 0000 0000 0000 0000 0000   =====>判断的数
0000 0000 0000 0000 0000 0000 1111 1111  =====>找到0xff这个数 =====> 循环右移11位

0x1F800000=====>判断的数
0001 1111 1000 0000 0000 0000 0000 0000   =====>判断的数
0000 0000 0000 0000 0000 0000 0111 1110  =====>找到0x7E这个数 =====> 循环右移10位

3.2 移位操作指令lsl/lsr/asr/ror

示例

    mov r0,#0xff
    
    @ 1.将r0寄存器中的值,逻辑左移4位,赋值给目标寄存器r1,值  
    lsl r1,r0,#0x4 @ r1 = r0 << 4 = 0xff0
    @ 0000 0000 0000 0000 0000 0000 1111 1111
    @ 0000 0000 0000 0000 0000 1111 1111 0000 
    
    @ 2.将r1寄存器中的值,逻辑右移4位,赋值给目标寄存器r2,值  r2 = r1 >> 4
    lsr r2,r1,#0x4  @ r2 = r1 >> 4 = 0xff
    @ 0000 0000 0000 0000 0000 1111 1111 0000 
    @ 0000 0000 0000 0000 0000 0000 1111 1111  
    
    @ 3.将r2寄存器中的值,循环右移4位,赋值给目标寄存器r3,值 
    ror r3,r2,#0x4 @ r3 = 0xf000000f
    @ 0000 0000 0000 0000 0000 0000 1111 1111 
    @ 1111 0000 0000 0000 0000 0000 0000 1111  
    
    ldr r4,=0x800000ff
    @ 4.将r4寄存器中的值,算数右移4位,赋值给目标寄存器r5,值
    asr r5,r4,#0x4  @ r5 = 0xf800000f
    @ 1000 0000 0000 0000 0000 0000 1111 1111 
    @ 1111 1000 0000 0000 0000 0000 0000 1111

3.3 位运算操作指令and/orr/eor/bic

① 示例1

② 示例2

3.4 算数运算操作指令add/adc/sub/sbc/mul

① 实现两个64位数相加

@第一个64位数:高32位用r0表示0x3   低32位用r1表示0xffffffff
@第二个64位数:高32位用r2表示0x4   低32位用r3表示0x1
@实现两个64位数相加:高32位相加r4,低32位相加r5    
    ldr r0,=0x3
    ldr r1,=0xffffffff
    ldr r2,=0x4
    ldr r3,=0x1
    adds r5,r1,r3 @ r5 = r1 + r3 = 0xffffffff + 0x1 = 0x0 ===> add 影响CPSR寄存器的C位
    adc r4,r0,r2 @ r4 = r0 + r2 = 0x3 + 0x4 + C  = 0x8 ===> adc    

② 实现两个64位数相减

    @第一个64位数:高32位用r0表示0x7   低32位用r1表示0x4
    @第二个64位数:高32位用r2表示0x4   低32位用r3表示0x5
    @实现两个64位数相减法:高32位相加r4,低32位相加r5
      
    ldr r0,=0x7
    ldr r1,=0x4
    ldr r2,=0x4
    ldr r3,=0x5
    subs r5,r1,r3 @ r5 = r1 - r3 = 0x4 - 0x5 = 0xffffffff ===> sub 影响CPSR寄存器的C位
    sbc r4,r0,r2  @ r4 = r0 - r2 = 0x7 - 0x4 - !C  = 0x2 ===> sbc 

③ 乘法指令

3.5 比较指令cmp

① 条件指令

② 示例

四、跳转指令

① 练习

五、特殊功能寄存器操作指令

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

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

相关文章

开源项目-SeaTunnel-UI数据集成系统

哈喽,大家好,今天给大家带来一个开源项目-SeaTunnel-UI数据集成系统 系统主要有任务配置,任务实例,数据源,虚拟表,用户管理等功能 登录 数据源 mysql数据源配置参数说明 kafka参数配置 mysqlcdc配置参数说明 虚拟表

LeetCode算法动态规划—斐波那契数列

目录 剑指 Offer 10- I. 斐波那契数列 - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; 代码&#xff1a; 运行结果&#xff1a; 写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项&#xff08;即 F(N)&#…

VUE3写后台管理(3)

VUE3写后台管理&#xff08;3&#xff09; 1.环境1.node2.vite3.Element-plus4.vue-router5.element icon6.less7.vuex8.vue-demi9.mockjs10.axios11.echarts 2.首页1.布局Main2.头部导航栏CommonHeader3.左侧菜单栏CommonLeft4.首页Home1.从后端获取数据显示到前端table的三种…

linux内核分析:进程与调度

lec12, 13, 14 : 进程数据结构 实际上进程和线程都是有一个统一的内部结构------task_struct 这是因为,上面的进程和线程到了内核这里,统一变成了任务,这就带来两个问题:信息展示和命令下达(有的是进程,有的是线程下达) pid 是 process id,tgid 是 thread group ID …

【小数点】C#使用Math.Round方法保留指定小数点位数,并且整数也同样保持统一的2位

2023年&#xff0c;第38周。给自己一个目标&#xff0c;然后坚持总会有收货&#xff0c;不信你试试&#xff01; 在实际开发项目中&#xff0c;特别是涉及金额之类的字段&#xff0c;一般都会用到小数&#xff0c;有些是保留1、2、3小数点。 本篇文章主要简单讲讲&#xff0c;如…

csp 202212-2 训练计划

题目链接&#xff1a;计算机软件能力认证考试系统http://118.190.20.162/view.page?gpidT159 思路&#xff1a; 最早开始时间是受之前依赖的项目限制&#xff0c;若无依赖&#xff0c;第一天即可开始。若有依赖&#xff0c;等待前置项目完成才能开始&#xff0c;累加即可。 …

linux( CentOs)对mysql基本操作和密码修改

1.mysql登录 mysql -uroot -p 2.显示所有数据库 Show databases; 3.生产过程中改密码 use mysql ; 查看user表中的user、host、password信息。 select user,host,password from user; select host,user from user;使用“GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIE…

企业为何刚需CRM软件系统

CRM系统一直被誉为客户关系管理的“神器”&#xff0c;很多企业对它爱之入骨。那么&#xff0c;CRM系统是否为企业刚需&#xff1f;它对企业有哪些好处&#xff1f;下面我们就来说一下。 CRM系统对企业的好处 提高工作效率&#xff1a;通过CRM系统的自动化工作流&#xff0c;…

Python之pycurl

pycurl简介 pycurl是一个用于访问URL的Python模块。它可以使用libcurl来访问各种互联网资源。libcurl支持HTTP、HTTPS、FTP、GOPHER、DICT、TFTP、TELNET和FILE等许多协议。pycurl是将libcurl封装成Python模块的结果&#xff0c;因此&#xff0c;它既可以在Python脚本中直接使…

竞赛选题 基于深度学习的中文情感分类 - 卷积神经网络 情感分类 情感分析 情感识别 评论情感分类

文章目录 1 前言2 情感文本分类2.1 参考论文2.2 输入层2.3 第一层卷积层&#xff1a;2.4 池化层&#xff1a;2.5 全连接softmax层&#xff1a;2.6 训练方案 3 实现3.1 sentence部分3.2 filters部分3.3 featuremaps部分3.4 1max部分3.5 concat1max部分3.6 关键代码 4 实现效果4.…

多线程回顾、集合Collection、Set、List等基本知识

多线程回顾 问: 多线程的两种创建方式? 继承Thread类实现Runnable接口线程池Callable 问:多线程通常会遇到线程安全问题? 什么情况下会遇到线程安全问题? 答:一个数据被多个线程访问(有读有写) 解决这个问题的方式? SE:同步锁 synchronized A : 同步代码块 B : 同步方法…

Prometheus+Grafana可视化监控【Redis状态】

文章目录 一、安装Docker二、安装Redis数据库(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装redis_exporter七、Grafana添加Redis监控模板 一、安装Docker 注意&#xff1a;我这里使用之前写好脚本进行安装Docker&#xff0c;如果已…

零碳联盟:为气候创新而生的全球合作

全球气候危机正逼近&#xff0c;而在这个关键时刻&#xff0c;红杉全球携手零碳联盟&#xff0c;共同致力于推动绿色科技的创新和应用&#xff0c;助力低碳经济的崛起。这一合作的宣布在红杉全球执行合伙人、红杉中国创始及执行合伙人沈南鹏的一番深思熟虑下得以实现。他强调&a…

Leetcode 剑指 Offer II 044. 在每个树行中找最大值

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一棵二叉树的根节点 root &#xff0c;请找出该二叉树中每一…

【JavaEE】多线程(二)

多线程&#xff08;二&#xff09; 文章目录 多线程&#xff08;二&#xff09;第一个多线程程序观察线程sleep创建线程继承Thread类&#xff0c;重写run方法实现Runnable&#xff0c; 重写run继承Thread&#xff0c;重写run实现Runnable&#xff0c;重写run基于lambda表达式 T…

ETL与ELT理解

ETL ETL&#xff08; Extract-Transform-Load&#xff09;&#xff0c;用来描述将数据从来源端经过抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;、加载&#xff08;Load&#xff09;至目的端的过程。ETL模式适用于小数据量集。如果在转换过程…

利用hutool工具类实现验证码功能

hutool工具类实现验证码 一.生成验证码二.校验验证码三.使用案例1.引入hutool工具类2.VerifyCodeResp接口响应体3.VerifyCodeController验证码工具类4.测试验证5.项目结构及源码下载 利用hutool工具类&#xff0c;可以很方便生成不同类型的验证码。这里简单记录下使用过程。 一…

1500*C. Tenzing and Balls (线性DP)

解析&#xff1a; 每次选择两个相同的数&#xff0c;删去他们以及他们之间的所有数&#xff0c;问最多可以删除多少&#xff1f; DP&#xff0c;对于某个位置 i &#xff0c;其前面有多个 j 使得 a[i]a[j]&#xff0c;所以使用 f[i] 来记录前 i 个数能够删除的最大值。 #inclu…

内网横向移动

内网横向移动 当攻击者在拿下一台内网主机后&#xff0c;通常会利用当前拿下的机器当作跳板&#xff0c;进一步攻击 内网其他主机&#xff0c;扩大攻击影响范围。 攻击机&#xff1a;Kali Linux 靶机&#xff1a; Windows server 2008 WEB 10.10.10.20…

C: . 与 -> 的区别

相同点&#xff1a; 功能相同&#xff1a;访问结构体或者类的成员。优先级相同。 不同点&#xff1a; 结构体变量用 . 来访问成员&#xff1b;结构体指针用 ->来访问成员&#xff1b; #include <stdio.h> #include<string.h> //首先定义结构体类型student&a…