【ARM】ARM其它指令
发布日期:2021-06-29 20:47:49
浏览次数:2
分类:技术文章
本文共 1242 字,大约阅读时间需要 4 分钟。
00. 目录
文章目录
01. 特殊指令介绍
Fmxr /Fmrx 指令是 NEON 下的扩展指令,在做浮点运算的时候,要先打开 vfp,因此需要用到 Fmxr 指令。
Fmxr:由 arm 寄存器将数据转移到协处理器中。 Fmrx:由协处理器转移到 arm 寄存器中。 如图下图所示为浮点异常寄存器格式。如表 3-16 所示为 FPEXC 的位定义。
FPEXC<浮点异常寄存器>,该寄存器是一个可控制 SIMD 及 VFP 的全局使能寄存器,并指定了这些扩展技术是如何记录的。
如果要打开 VFP 协处理器的话,可以用以下指令:
mov r0, #0x40000000fmxr fpexc, r0 @ enable NEON and VFP coprocessor
02. CLZ 计算前导零数目
语法格式:
CLZ {cond} Rd,Rm@ 其中:@ cond 是一个可选的条件代码。@ Rd 是目标寄存器。@ Rm 是操作数寄存器。
用法:
CLZ 指令对 Rm 中的值的前导零进行计数,并将结果返回到 Rd 中,如果未在源寄存器中设置任何位,则该结果值为 32,如果设置了位 31,则结果值为 0。
条件标记:
该指令不会更改标记。
体系结构:
ARMv5 以上。
示例如图 3-6 所示。
03. 饱和指令介绍
这是用来设计饱和算法的一组指令,所谓饱和是指出现下列 3 种情况:
(1)对于有符号饱和运算,如果结果小于-2^n ,则返回结果将为-2^n 。 (2)对于无符号饱和运算,如果整数结果是负值,那么返回的结果将为 0。 (3)对于结果大于 2^n -1 的情况,则返回结果将为 2^n -1。 只要出现这情况,就称为饱和,并且饱和指令会设置 Q 标记,下面简单介绍一下 QADD带符号加法。 QSUB:带符号减法。 QDADD:带符号加倍加法。 QDSUB:带符号加倍减法。 将结果饱和导入符号范围(-2^31 ≤x≤2^31 -1)内。语法格式:
op{cond} {Rd} ,Rm,Rn
其中:
q op 是 QADD、QSUB、QDADD、QDSUB 之一。 q cond 是一个可选的条件代码。 q Rd 是目标寄存器。 q Rm、Rn 是存放操作数的寄存器(注:不要将 r15 用作 Rd、Rm 或 Rn)。用法如下:
q QADD 指令可将 Rm 和 Rn 中的值相加。 q QSUB 指令可从 Rm 中的值减去 Rn 中的值。 q QDADD/QDSUB 指令涉及并行指令,因此这里不多做讨论。条件标记:
如果发生饱和,则这些指令设置 Q 标记,若要读取 Q 标记的状态,需要使用 MRS 指令。
体系结构:
该指令可用于 v5T-E 及 v6 或者更高版本的体系中。
程序示例:
QADD r0 ,r1,r9QSUBLT r9,r0,r1
04. 附录
11.1 ARM Architecture Reference Manual
转载地址:https://dengjin.blog.csdn.net/article/details/106853716 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月24日 17时35分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
年终总结全攻略
2019-04-30
ppt效率提升工具&资源网站&广告行业相关推荐
2019-04-30
运维工作内容
2019-04-30
数据分析学习一
2019-04-30
系统架构图
2019-04-30
百度推广工作流程
2019-04-30
事务学习一
2019-04-30
区块链学习一
2019-04-30
项目管理ITTO(一张图梳理49个过程)
2019-04-30
思考的整理术
2019-04-30
DMZ-demilitarized zone 隔离区
2019-04-30
沃学设计图
2019-04-30
网站栏目
2019-04-30
Dojo
2019-04-30
OAuth 2.0学习
2019-04-30
军师旅团营连排班各有多少人
2019-04-30
DotNet NB 学习公众号
2019-04-30
WCF传递Stream时,同时传递其它参数的问题
2019-04-30
abp vNex
2019-04-30