学过的汇编指令整合

news2025/1/16 1:46:47

1.数据搬移指令

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

解释: <opcode>:指令码

{<cond>}:条件码

{s}:状态位,如果在指令后面加上s,则运算的结果会影响CPSR的条件位

<Rd>:目标寄存器

<shifter_operand>:第一操作数,可以是寄存器,也可以是立即数 按照指令码将第一操作数运算后的结果保存在目标寄存器

指令码功能:

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

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

2.移位指令 

格式:<opcode>{<cond>}{s} <Rd>, <Rn>, <shifter_operand>

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

指令码:

LSL:左移运算 低位补0

LSR:右移运算 高位补0

ROR:循环右移:低位移出的值补到高位

 3.位运算指令

格式:<opcode>{<cond>}{s} <Rd>, <Rn>, <shifter_operand>

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

指令码:

and:与 与0清0 与1不变

orr:或 或1置1 或0不变

eor:异或 相同为0 不同为1

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

4.算数运算指令

格式:<opcode>{<cond>}{s} <Rd>, <Rn>, <shifter_operand>

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

add:加法运算

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

sub:减法运算

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

mul:乘法运算

5.比较指令

格式: cmp 第一操作数,第二操作寄存器

比较两个数据

cmp命令本质:实际上就是比较的两个数进行减法运算,并且减法运算的结果会影响到CPSR寄存器的条件位

通常比较指令完毕之后会使用条件码进行判断,根据判断的结果做不同的逻辑

 条件码:

 

6. 跳转指令

<opcode>{<cond>} 标签

功能:跳转到指定的标签下

指令码:

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

7.单寄存器内存读写指令

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

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

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

 向内存中写:

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

strh:向内存写半个字(2字节)的数据

strb:向内存写一个字节的数据

从内存读:

ldr:从内存读取一个字的数据

ldrh:从内存读取半个字的数据

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

8.批量寄存器的内存读写指令

向内存写:

stm 目标地址,{寄存器列表}

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

从内存读

ldm 目标地址,{寄存器列表}

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

注意事项:

1.如果寄存器列表中寄存器的编号连续,可以用-表示列表,如果不连续,用,分割寄存器

{r1-r5,r7}

2.无论寄存器列表中如何表示,我们在读写内存的时候始终是低地址 对应低寄存器编号

批量寄存器的地址增长方式:

ia后缀

ib后缀

da后缀

db后缀

9.栈内存读写指令

增栈:压栈结束后,栈顶往地址大的方向增长

减栈:压栈结束后,栈顶往地址小的方向增长

空栈:压栈结束后,栈顶区域没有有效数据

满栈:压栈结束后,栈顶区域存放有效数据

空增栈(EA)/空减栈(ED)/满增栈(FA)/满减栈(FD)

ARM使用的栈是满减栈

 

9.1栈实例---叶子函数的调用过程

.text  
.global _start 
            

_start:
    ldr sp,=0X40000020 @初始化栈
    b main
main:
    mov r1,#1
    mov r2,#2
    bl func
    add r3,r1,r2
    b main

func:
@压栈保护现场
    stmfd sp!,{r1,r2}
    mov r1,#3
    mov r2,#4
    sub r4,r2,r1
    @出栈恢复现场
    ldmfd sp!,{r1,r2}
    mov pc,lr  @返回main函数
    
    
wh: 
    b wh  
    
.end 
    

9.2栈实例---非叶子函数的调用过程

.text  
.global _start 
            

_start:
    ldr sp,=0X40000020 @初始化栈
    b main
main:
    mov r1,#1
    mov r2,#2
    bl func
    add r3,r1,r2
    b main

func:
@压栈保护现场
    stmfd sp!,{r1,r2,lr}
    mov r1,#3
    mov r2,#4
    bl fun1
    sub r4,r2,r1
    @出栈恢复现场
    ldmfd sp!,{r1,r2,lr}
    mov pc,lr  @返回main函数
fun1:
@压栈保护现场
    stmfd sp!,{r1,r2}
    mov r1,#4
    mov r2,#5
    mul r5,r1,r2
    @出栈恢复现场
    ldmfd sp!,{r1,r2}
    mov pc,lr
    
    
wh: 
    b wh  
    
.end 
    

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

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

相关文章

Docker命令起别名

1.打开.bashrc文件 vi ~/.bashrc 2. 起别名 alias dpsdocker ps --format "table{{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}" alias disdocker images 3. 文件生效 source ~/.bashrc 4.展示

计算机竞赛 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

2023年全国控制科学与工程学科评估结果 - 自动化考研

考研选择学校时&#xff0c;控制科学与工程考研学校排名情况怎样是广大考研学子十分关心的问题&#xff0c;以下是我们自动化考研联盟为大家整理得最新控制科学与工程学科评估结果情况&#xff0c;还比较权威&#xff0c;供大家参考。 最后祝大家一战成硕,有其他问题欢迎评论区…

【前段基础入门之】=>CSS浮动

浮动的简介 在最初&#xff0c;浮动是用来实现文字环绕图片效果的&#xff0c;现在浮动是主流的页面布局方式之一。 元素浮动后的特点 &#x1f922; 脱离文档流。&#x1f60a; 不管浮动前是什么元素&#xff0c;浮动后&#xff1a;默认宽与高都是被内容撑开&#xff08;尽…

数字IC前端学习笔记:数字乘法器的优化设计(进位保留乘法器)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 阵列乘法器设计中限制乘法器速度的是随着数据位宽而迅速增大的串行进位链&#xff0c;如果使用进位保留加法器&#xff0c;则可以避免在设计中引入较长时间的等待&…

springmvc中DispatcherServlet关键对象

以下代码为 spring boot 2.7.15 中自带的 spring 5.3.29 RequestMappingInfo 请求方法相关信息封装&#xff0c;对应的信息解析在 RequestMappingHandlerMapping 的 createRequestMappingInfo() 中实现。 对于 RequestMapping 赋值的相关信息进行解析 protected RequestMappi…

淘宝天猫渠道会员购是什么意思?如何开通天猫淘宝渠道会员购有什么用?

淘宝天猫渠道会员购是什么意思&#xff1f; 淘宝天猫渠道会员购与淘宝天猫粉丝福利购意思基本相同&#xff0c;都可以领取淘宝天猫大额内部隐藏优惠券、通过草柴APP开通绑定渠道会员还可以获得购物返利。 草柴APP如何绑定开通淘宝天猫渠道会员&#xff1f; 1、手机下载安装「…

GRACE-FO L2产品的发布说明 - 版本UTCSR RL-06.1产品

数据更新日期&#xff1a;2023-5-11 0&#xff09;此说明取代了所有先前与UTCSR-RL06.1 GRACE-FO Level-2产品相关的旧版本发布说明。 1&#xff09;截止到本发布说明日期的GRACE-FO RL-06.1产品文件列表如下&#xff1a; 2&#xff09;通常情况下&#xff0c;每个日历月有四…

vscode 无法打开源文件

以下是c/c插件的intelligense设置情况&#xff1a; 解决办法&#xff1a; 重新安装vsode无用&#xff1b;重新下载mingw64&#xff0c;管用了&#xff01;&#xff08;我猜可能是之前换电脑移植文件的时候导致了部分文件丢失&#xff09;

【LLM】主流大模型体验(文心一言 科大讯飞 字节豆包 百川 阿里通义千问 商汤商量)

note 智谱AI体验百度文心一言体验科大讯飞大模型体验字节豆包百川智能大模型阿里通义千问商汤商量简要分析&#xff1a;仅从测试“老婆饼为啥没有老婆”这个问题的结果来看&#xff0c;chatglm分点作答有条理&#xff08;但第三点略有逻辑问题&#xff09;&#xff1b;字节豆包…

普通人需要做副业吗?有什么合适的副业

普通人现在需要做副业吗&#xff0c;我觉得有这个必要&#xff0c;当然也要根据个人情况选择&#xff0c;那么做副业有什么好处呢&#xff1f;做副业可以带来额外的收入&#xff0c;增加灵活性&#xff0c;提升技能&#xff0c;发展创造力&#xff0c;降低风险&#xff0c;提供…

(黑客)网络安全———自学方法

如果你想自学网络安全&#xff0c;首先你必须了解什么是网络安全&#xff01;&#xff0c;什么是黑客&#xff01;&#xff01; 1.无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性&#xff0c;例如 Web 安全技术&#xff0c;既有 Web 渗透2.也有 Web 防…

YoloV5实时推理最短的代码

YoloV5实时推理最简单代码 import cv2 import torch# 加载YOLOv5模型 model torch.hub.load(ultralytics/yolov5, yolov5s)# 使用CPU或GPU进行推理 device cuda if torch.cuda.is_available() else cpu model.to(device)# 打开摄像头&#xff08;默认摄像头&#xff09; cap…

【论文笔记】Diffusion-based 3D Object Detection with Random Boxes

原文链接&#xff1a;https://arxiv.org/abs/2309.02049 1. 引言 基于激光雷达的3D目标检测方法通常依赖经验设置锚框或中心半径&#xff0c;而本文探索从随机框直接预测真实边界框。   本文提出Diff3Det&#xff0c;使用扩散模型进行3D目标检测。首先为真实边界框添加高斯噪…

[论文必备]最强科研绘图分析工具Origin(1)——安装教程

之前在论文中pr曲线和loss曲线对比用到了Origin这个最强科研绘图分析工具&#xff0c;被导师狠狠夸了&#xff0c;下面来分享一下~ 本篇先带你手把手安装这个软件&#xff0c;可以先点再慢慢看哦~ 目录 &#x1f4e2;一、软件简介 &#x1f33b;二、安装教程 &#x1f384…

想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树

想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树 前言一. 验证二叉搜索树二. 不同的二叉搜索树三. 不同的二叉搜索树II 前言 想要精通算法和SQL的成长之路 - 系列导航 二叉搜索树的定义&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包…

Docker中将静态页面部署nginx

1.启动nginx docker start nginx 2.进入nginx cd /usr/share/nginx/html 3.vim index.html 说明&#xff1a;没有vim命令&#xff0c;docker镜像只保留了基本的功能&#xff08;文件&#xff09;。 4.解决方法 数据卷&#xff1a;是一个虚拟目录&#xff0c;是容器内目录与…

山西电力市场日前价格预测【2023-10-04】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-04&#xff09;山西电力市场全天平均日前电价为311.79元/MWh。其中&#xff0c;最高日前电价为427.05元/MWh&#xff0c;预计出现在18: 45。最低日前电价为249.76元/MWh&#xff0c;预计…

Linux apt-get update - Could not connect to XXX(Connection refused)

Linux: apt-get update ----Err:Could not connect to XXX(Connection refused) - 知乎 先换源&#xff08;vi不好使用&#xff0c;可以换成gedit&#xff09; 若还是不行&#xff0c;可以再尝试执行&#xff1a; unset http_proxy unset https_proxy

决策树C4.5算法的技术深度剖析、实战解读

目录 一、简介决策树&#xff08;Decision Tree&#xff09;例子&#xff1a; 信息熵&#xff08;Information Entropy&#xff09;与信息增益&#xff08;Information Gain&#xff09;例子&#xff1a; 信息增益比&#xff08;Gain Ratio&#xff09;例子&#xff1a; 二、算…