手机搜索网站建设/好用搜索引擎排名

手机搜索网站建设,好用搜索引擎排名,装修网站建设方案百度文库,如何用公众号做网站一. Load/Store 指令 1. 前变址 前变址指令是在读取或存储数据时,先根据基址寄存器(Rn)与偏移量(offset)计算出有效地址,再进行数据操作。相关指令及示例如下: LDR R0, [R1, #4]:从…

一. Load/Store 指令

1. 前变址

前变址指令是在读取或存储数据时,先根据基址寄存器(Rn)与偏移量(offset)计算出有效地址,再进行数据操作。相关指令及示例如下:

  • LDR R0, [R1, #4]:从地址R1 + 4处读取一个字(32 位)到R0。假设R1 = 0x10000000,指令执行后R0 = 0x88776655R1的值保持为0x10000000 。

  • LDRB R2, [R1, #4]:从地址R1 + 4处读取一个字节(8 位)到R2,高位补零扩展为 32 位。执行后R2 = 0x00000055R1的值不变。

  • LDRH R3, [R1, #4]:从地址R1 + 4处读取一个半字(16 位)到R3,高位补零扩展为 32 位。执行后R3 = 0x00006655R1的值不变。

  • LDRSB R4, [R1, #7]:从地址R1 + 7处读取一个字节,执行符号扩展成 32 位后存入R4。执行后R4 = 0xFFFFFFFF88R1的值不变。

前变址指令详细说明如下:

指令

功能描述

LDRB Rd, [Rn, offset]

从地址Rn + offset处读取一个字节到Rd

LDRH Rd, [Rn, offset]

从地址Rn + offset处读取一个半字到Rd

LDR Rd, [Rn, offset]

从地址Rn + offset处读取一个字到Rd

LDRD Rd1, Rd2, [Rn, offset]

从地址Rn + offset处读取一个双字(64 位整数)到Rd1(低 32 位)和Rd2(高 32 位)中

STRB Rd, [Rn, offset]

Rd中的低字节存储到地址Rn + offset

STRH Rd, [Rn, offset]

Rd中的低半字存储到地址Rn + offset

STR Rd, [Rn, offset]

Rd中的低字存储到地址Rn + offset

STRD Rd1, Rd2, [Rn, offset]

Rd1(低 32 位)和Rd2(高 32 位)表达的双字存储到地址Rn + offset

LDRSB Rd, [Rn, offset]
LDRSH Rd, [Rn, offset]

字节 / 半字的自动变址加载,并且在加载后执行符号扩展成 32 位

2.自动变址

自动变址指令在完成数据操作后,会自动对基址寄存器进行调整。

以   LDR.W R0, [R1, #20]!  为例,执行步骤如下:

  • 先计算R1 = R1 + 20 。

  • 然后将计算后的地址R1中的数据读取到R0 。

自动变址指令详细说明如下:

指令

功能描述

LDR.W Rd, [Rn, offset]!
LDRB.W Rd, [Rn, offset]!
LDRH.W Rd, [Rn, offset]!
LDRD.W Rd1, Rd2, [Rn, offset]!

字 / 字节 / 半字 / 双字的自动变址加载(不做带符号扩展,没有用到的高位全部置 0)

LDRSB.W Rd, [Rn, offset]!
LDRSH.W Rd, [Rn, offset]!

字节 / 半字的自动变址加载,并且在加载后执行符号扩展成 32 位整数

STR.W Rd, [Rn, offset]!
STRB.W Rd, [Rn, offset]!
STRH.W Rd, [Rn, offset]!
STRD.W Rd1, Rd2, [Rn, offset]!

字 / 字节 / 半字 / 双字的自动变址存储

3.后变址

后变址指令先以基址寄存器(Rn)的当前值进行数据操作,然后再对基址寄存器进行调整。

STR.W R0, [R1], #-12为例,执行步骤如下:

  • 先将R0的数据存储到地址R1处。

  • 然后计算R1 = R1 + (-12) 。

后变址指令详细说明如下:

指令

功能描述

LDR.W Rd, [Rn], offset
LDRB.W Rd, [Rn], offset
LDRH.W Rd, [Rn], offset
LDRD.W Rd1, Rd2, [Rn], offset

字 / 字节 / 半字 / 双字的带后索引加载(不做带符号扩展,没有用到的高位全清 0)

LDRSB.W Rd, [Rn], offset

字节 / 半字的带后索引加载,并且在加载后执行符号扩展成 32 位整数

STR.W Rd, [Rn], offset
STRB.W Rd, [Rn], offset
STRH.W Rd, [Rn], offset
STRD.W Rd1, Rd2, [Rn], offset

字 / 字节 / 半字 / 双字的带后索引存储

后变址应用举例:

  • LDR R0, [R1], #4:假设R1 = 0x10000000,先从地址R1(即0x10000000)处读取一个字到R0R0 = 0x44332211,然后R1 = R1 + 4 = 0x10000004 。

  • LDRB R2, [R1], #4:从地址R1(此时R1 = 0x10000004)处读取一个字节到R2R2 = 0x00000011,接着R1 = R1 + 4 = 0x10000004 。

  • LDRH R3, [R1], #4:从地址R10x10000004)处读取一个半字到R3R3 = 0x00002211,之后R1 = R1 + 4 = 0x10000004 。

  • LDRSB R4, [R1], #7:从地址R10x10000004)处读取一个字节并符号扩展到 32 位存入R4R4 = 0x00000011,最后R1 = R1 + 7 = 0x10000007 。

Load/Store 指令综合举例(字序调整):


假设内存地址0x1000处存储的值为0x12345678ABCDEF00,执行以下指令:

  • LDR R2, =0x1000:将地址0x1000加载到R2 。

  • LDRD.W R0, R1, [R2]:从地址R2(即0x1000)处读取一个双字,R0 = 0xABCDEF00R1 = 0x12345678 。

  • STRD.W R1, R0, [R2]:把R1(低 32 位)和R0(高 32 位)存储到地址R20x1000)处,此时(0x1000) = 0xABCDEF0012345678 。

二. 批量数据传送指令

1. 批量数据 Load/Store 指令

这些指令用于在内存与多个寄存器之间批量传输数据,Rd后面的!表示在每次访问前(Before)或访问后(After),要自增(Increment)或自减(Decrement)基址寄存器Rd的值,增 / 减单位为 1 个字(4 字节)。具体指令如下:

指令

功能描述

LDMIA Rd!, {寄存器列表}

Rd处读取多个字,每读一个字后Rd自增一次,16 位宽度

STMIAR Rd, {寄存器列表}

存储多个字到Rd处,每存一个字后Rd自增一次,16 位宽度

LDMIA.W Rd!, {寄存器列表}

Rd处读取多个字,每读一个字后Rd自增一次,32 位宽度

LDMDB.W Rd!, {寄存器列表}

Rd处读取多个字,每读一个字前Rd自减一次,32 位宽度

STMIA.W Rd!, {寄存器列表}

存储多个字到Rd处,每存一个字后Rd自增一次,32 位宽度

STMDB.W Rd!, {寄存器列表}

存储多个字到Rd处,每存一个字前Rd自减一次,32 位宽度

例如,当R8 = 0x8000时:

  • STMIA.W R8!, {R0 - R3}:每存储一次,R8的值增加 4 字节,先存储R0 - R3的值,然后R8自增。执行后R8值变为0x8010 。

  • STMDB.W R8!, {R0 - R3}:每存储一次,R8的值减少 4 字节,先自减R8,然后存储R0 - R3的值。执行后R8值变为0x7FF0 。

2.堆栈传送类指令

  • STMDB SP!, [R0 - R3, LR]:等效于PUSH {R0 - R3, LR},将寄存器R0 - R3和链接寄存器LR的值压入堆栈,堆栈指针SP在存储前递减。

  • LDMIIA SP!, {R0 - R3, PC}:等效于POP {R0 - R3, PC},从堆栈中弹出数据到寄存器R0 - R3和程序计数器PC,堆栈指针SP在读取后递增。

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

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

相关文章

ubuntu部署运行xinference全精度对话deepseek本地部署图文教程

前置环境搭建劳请移步往期 source activate 自己环境名启动python3.12环境安装xinference, 按教程敲命令,wheel包与wsl的通用,pip install 包名。 vllm引擎,transform引擎也会顺带自动装上了。 后续操作请参照往期教程。本地部署模…

技术分享 | MySQL内存使用率高问题排查

本文为墨天轮数据库管理服务团队第51期技术分享,内容原创,如需转载请联系小墨(VX:modb666)并注明来源。 一、问题现象 问题实例mysql进程实际内存使用率过高 二、问题排查 2.1 参数检查 mysql版本 :8.0.…

【vulhub/wordpress靶场】------获取webshell

1.进入靶场环境: 输入:cd / vulhub / wordpress / pwnscriptum 修改版本号: vim docker-compose.yml version: 3 保存退出 开启靶场环境: docker - compose up - d 开启成功,docker ps查看端口 靶场环境80…

微信小程序:用户拒绝小程序获取当前位置后的处理办法

【1】问题描述: 小程序在调用 wx.getLocation() 获取用地理位置时,如果用户选择拒绝授权,代码会直接抛出错误。如果再次调用 wx.getLocation() 时,就不会在弹窗询问用户是否允许授权。导致用户想要重新允许获取地理位置时&#x…

全网首创/纯Qt/C++实现国标GB28181服务/实时视频/云台控制/预置位/录像回放和下载/事件订阅/语音对讲

一、前言说明 用纯Qt来实现这个GB28181的想法很久了,具体可以追溯到2014年,一晃十年都过去了,总算是整体的框架和逻辑都打通了,总归还是杂七杂八的事情多,无法静下心来研究具体的协议,最开始初步了解协议后…

Django+celery+flower

Djangoceleryflower Django的定时任务及可视化监控Django Django的定时任务及可视化监控 Django的定时任务,以及可视化监控。 Django Django; 首先在python中新建虚拟环境并激活 pip install virtualenv python -m venv venv source venv/bin/activa…

组态王Kingview配置为OPCUA服务器的一些问题处理

一、问题描述 1、组态王【运行配置】界面没有【服务配置】的选项,无法将组态王Kingview配置为OPCUA服务器; 2、点击组态王【运行配置界面】的【服务配置】选项弹窗警告提示【试图执行的操作不受支持】,如下图所示: 二、问题分析 …

模块二 单元4 安装AD+DC

模块二 单元4 安装ADDC 两个任务: 1.安装AD活动目录 2.升级当前服务器为DC域控制器 安装前的准备工作: 确定你要操作的服务器系统(Windows server 2022); 之前的服务器系统默认是工作组的模式workgroup模式&#xff08…

VMware主机换到高配电脑,高版本系统的问题

原来主机是i3 ,windows7系统,vmware 14.0,虚机系统是ubuntu 14.04。目标新机是i7 14700KF,windows11系统。原以为安装虚拟机,将磁盘文件,虚拟机配置文件拷贝过去可以直接用。 新目标主机先安装了vmware 15,运行原理虚机&#xff0…

MDG实现BP客商复杂逻辑校验的方法

引言 项目中可能常用的增强点是USMD_RULE_SERVICE来实现复杂的校验逻辑,除此之外,SAP对BP主数据还提供了以下的实现方式。 方法1-替换ERP校验类 众所周知,BP存在复杂的ERP校验,主要通过类CL_MDG_BS_FND_BP_CHECK(子…

基于springboot的教务系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 这些年随着Internet的迅速发展,我们国家和世界都已经进入了互联网大数据时代,计算机网络已经成为了整个社会以及经济发展的巨大动能,各个高校的教务工作成为了学校管理事务的重要目标和任务,因此运用互联网技术来提高教务的…

TDengine 中的流式计算

简介 TDengine 中的流计算,功能相当于简化版的 FLINK , 具有实时计算,计算结果可以输出到超级表中存储,同时也可用于窗口预计算,加快查询速度。 创建流式计算 CREATE STREAM [IF NOT EXISTS] stream_name [stream_o…

回调函数中 qsort 函数的使用

目录 一.冒泡排序 二.指针类型 void* 三. qsort 1.简介 2.研究函数参数 3.怎么用? (1)排数组,升序 (2)排序结构体 四.用冒泡排序思想,模拟实现 qsort (可排序任意类型数据) 1.函数参数设计 2.在 if (cmp( )>0) 怎么传参&#x…

电机控制常见面试问题(十四)

文章目录 一.电机信噪比二.电机零点偏移校正和极对数自适应1.零点偏移量检测​2. 极对数识别三.交流电机电流纹波怎么产生的1.电源相关因素2.电机本体特性3.​PWM逆变器谐波4.负载与环境干扰5.诊断流程建议 四.谈谈对谐波的理解1.谐波定义2.次谐波产生源3.次谐波的检测与分析4.…

系统思考—啤酒游戏经营决策沙盘模拟

再次感谢文华学院的邀请,为经纬集团管理层带来 《啤酒游戏经营决策沙盘》! 很多朋友问:“最近是不是啤酒游戏上的少了?” 其实,真正的关键不是游戏本身,而是——如何让大家真正看见复杂系统中的隐性结构。 …

排序算法实现:插入排序与希尔排序

目录 一、引言 二、代码整体结构 三、宏定义与头文件 四、插入排序函数(Insertsort) 函数作用 代码要点分析 五、希尔排序函数(ShellSort) 函数作用 代码要点分析 六、打印数组函数(PrintSort&#x…

2025-03-20 学习记录--C/C++-C 库函数 - toupper()、tolower()、 isspace()

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、C 库函数 - toupper() ⭐️ C 标准库 - <ctype.h> C 标准库的 ctype.h 头文件提供了一些函数&#xff0c;可用于测试和…

易语言模拟真人鼠标轨迹算法

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

sparksql的Transformation与 Action操作

Transformation操作 与RDD类似的操作 map、filter、flatMap、mapPartitions、sample、 randomSplit、 limit、 distinct、dropDuplicates、describe&#xff0c;而以上这些都是企业中比较常用的&#xff0c;这里在一个文件中统一论述 val df1 spark.read.json("src/m…

微软Data Formulator:用AI重塑数据可视化的未来

在数据驱动的时代,如何快速将复杂数据转化为直观的图表是每个分析师面临的挑战。微软研究院推出的开源工具 Data Formulator,通过结合AI与交互式界面,重新定义了数据可视化的工作流。本文将深入解析这一工具的核心功能、安装方法及使用技巧,助你轻松驾驭数据之美。 一、Dat…