问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

arm中如何取绝对值,用浮点指令吗

发布网友 发布时间:2022-04-23 05:10

我来回答

1个回答

热心网友 时间:2023-10-06 17:26

ABS 绝对值
ACS 反余弦
ADF 加法
ASN 反正弦
ATN 反正切
CMF 比较浮点值
CNF 比较取负的浮点值
COS 余弦
DVF 除法
EXP 指数
FDV 快速除法
FIX 转换浮点值成整数
FLT 转换整数成浮点值
FML 快速乘法
FRD 快速反向除法
LDF 装载浮点值
LFM 装载多个浮点值
LGN 自然对数
LOG 常用对数
MNF 传送取负的值
MUF 乘法
MVF 传送值/浮点寄存器到一个浮点寄存器
NRM 规格化
POL 极化角
POW 幂
RDF 反向除法
RFC 读 FP 控制寄存器
RFS 读 FP 状态寄存器
RMF 余数
RND 舍入成整值
RPW 反向幂
RSF 反向减法
SFM 存储多个浮点值
SIN 正弦
SQT 平方根
STF 存储浮点值
SUF 减法
TAN 正切
URD 非规格化舍入
WFC 写 FP 控制寄存器
WFS 写 FP 状态寄存器

 

本文档部分内容取自 ARM 汇编器手册。

ARM 可以与最多 16 个协处理器相接口(interface)。ARM3 和以后的处理器在 ARM 内有虚拟的协处理器来处理内部控制功能。而可获得的第一个协处理器是浮点处理器。这个芯片处理 IEEE 标准的浮点运算。定义了一个标准的 ARM 浮点指令集,所以编码可以跨越所有 RISC OS 机器。如果不存在实际的硬件,则这些指令被截获并由浮点模拟器模块(FPEmulator)来执行。程序不需要知道是否存在 FP 协处理器。唯一不同的是执行速度。

RISC OS 的 BASIC 汇编器,作为标准,不支持任何真实的浮点指令。你可以转换整数到你的实现定义的‘浮点’并用它们进行(最普通的定点)基本数*算,但你不能与浮点协处理器交互并以‘固有的’方式来做这些事情。但是,扩展汇编器功能的补丁中包含了 FP 指令。

ARM IEEE FP 系统由 8 个高精度 FP 寄存器(F0 到 F7)。寄存器的格式是无关紧要的,因为你不能直接访问这些寄存器,寄存器只在它被传送到内存或 ARM 寄存器时是‘可见的’。在内存中,一个 FP 寄存器占用三个字,但因为 FP 系统把它重新装载到自己的寄存器中,这三个字的格式是无关紧要的。还有一个 FPSR (浮点状态寄存器),它类似于 ARM 自己的 PSR,持有应用程序可能需要的状态信息。可获得的每个标志都有一个‘陷阱’,这允许应用程序来启用或禁用与给定错误关联的陷阱。FPSR 还允许你得知在 FP 系统得不同实现之间的区别。还有一个 FPCR (浮点控制寄存器)。它持有应用程序不应该访问的信息,比如开启和关闭 FP 单元的标志。典型的,硬件有 FPCR 而软件没有。

FP 单元可以软件实现比如 FPEmulator 模块,硬件实现比如 FP 芯片(和支持代码),或二者的组合。二者的最好的例子是 Warm Silence Software 补丁,它允许 ARM FP 操作利用配备在 PC 协处理器卡上的 80x87 作为作为一个浮点协处理器。

计算的结果如同有无限的精度,接着被舍入成要求的精度。舍入方式有就近舍入,向正无穷(P)舍入, 向负无穷舍入(M), 或向零舍入。缺省的是就近舍入。如果不可抉择,则舍入到最近似的偶数。工作精度是 80 位,其组成是 64 位尾数,15 位指数,和一个符号位。在一些实现中对用单精度工作的指令提供了更好的性能 - 特别是完全基于软件的那些实现。

FPSR 包含 FP 系统所需的状态。总是提供 IEEE 标志,但只在一次 FP 比较操作之后才可获得结果标志。

浮点指令不应该用在 SVC 模式下。

FPSR 的低字节是例外标志字节。

6 4 3 2 1 0
FPSR: 保留 INX UFL OFL DVZ IVO

当引发一个例外条件的时候,把在位 0 到 4 中的适当的累计(cumulative)例外标志设置为 1。如果设置了相关的陷阱位,则按操作系统指定的方式把一个例外递送给用户程序。(注意在下溢的情况下,陷阱启用位的状态决定在什么条件下设置下溢标志。) 只能用 WFS 指令清除这些标志。
IVO - invalid operation 无效操作
在进行的操作的一个操作数是无效时设置 IVO。无效操作有:

在一个捕获(trapping)的 NaN (not-a-number:非数)上进行任何操作。
无穷大幅值(magnitude)相减,例如 (+∞) + (-∞)。
乘法 0 * ∞。
除法 ∞/∞ 或 x/0。
x REM y 这里 x = ∞ 或 y = 0。
(REM 是浮点除法操作的余数。)
任何小于 0 的数的平方根。
在上溢或操作数是 NaN 的时候进行转换成整数或十进制数。
如果上溢使转换不可能,则生成最大的正或负整数(依赖于操作数的符号)并通知(signal)一个 IVO。
比较时有未对阶(Unordered)操作数例外。
ACS、ASN、SIN、COS、TAN、LOG、L www.hbbz08.com GN、POW、或 RPW 有无效/错误的参数。
DVZ - division by zero 除零
如果除数是零而被除数是一个有限的、非零的数则设置 DVZ 标志。如果禁用了陷阱则返回一个正确的有符号的无穷。还为 LOG(0) 和 LGN(0) 设置这个标志。如果禁用了陷阱则返回负无穷。

OFL - overflow 上溢
结果幅值超出目的格式最大的数的时候设置 OFL 标志,舍入的结果是指数范围无限大的(unbounded)。 因为在结果被舍入之后检测上溢,在一些操作之后是否发生上溢依赖于舍入模式。如果禁用了陷阱,要么返回一个有正确符号的无穷,要么返回这个格式的最大的有限数。这依赖于舍入模式和使用的浮点系统。

UFL - underflow 下溢
两个有关联的事件产生下溢:

极小值(tininess) - 微小的非零结果在幅值上小于这个格式的最小规格化数。
准确性损失 - 反规格化导致的准确性损失可能大于单独舍入导致的准确性损失。
依赖于 UFL 陷阱启用位的值,以不同的方式设置 UFL 标志。如果启用了陷阱,则不管是否有准确性损失极,在检测到极小值时就设置 UFL 标志。如果禁用了陷阱,则在检测到极小值和准确性损失二者时设置 UFL 标志(在这种情况下还设置 INX 标志);否则返回一个有正确符号的零。因为在结果被舍入之后检测下溢,在
arm中如何取绝对值,用浮点指令吗

RISC OS 的 BASIC 汇编器,作为标准,不支持任何真实的浮点指令。你可以转换整数到你的实现定义的‘浮点’并用它们进行(最普通的定点)基本数学运算,但你不能与浮点协处理器交互并以‘固有的’方式来做这些事情。但是,扩展汇编器功能的补丁中包含了 FP 指令。ARM IEEE FP 系统由 8 个高精度 FP 寄...

三大移动主流cup处理器ARM/Intel/MIPS有什么区别

例如,可以命令一个复杂指令集处理器对2个数求和,并把结果存入主内存中。为了完成这个命令,处理器首先从地址1中取得第一个数(操作1),然后从地址2中取得另一个数(操作2),然后求和(操作3),等等。所有的现代处理器都使用一种所谓微指令的概念,这是一个处理器内部的指令集合,用来描述处理器可以做的原子操作。复杂...

在arm的汇编程序中有哪几种伪指令

RLIST伪指令可用于对一个通用寄存器列表定义名称,使用该伪指令定义的名称可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器访问次序为根据寄存器的编号由低到高,而与列表中的寄存器排列次序无关。使用示例:RegList R www.hbbz08.com LIST {R0-R5,R8,R10} ;将寄存器列表名称定义为Reg...

armlinux安装apkarmlinux安装

pathmunge也是一个指令,是一个直接用于添加路径到PATH环境变量的指令。 linux下如何安装安卓的APK包? 1、在linux中安装virtualbox,然后安装制安卓系统,再知安装apk2、尝试安装shashlink,这个是安卓的一个模拟库,一般来说,支持道x86的安卓的apk才可以运行,只支持arm的不能运行。 如何编译armlinux的go? Golang也就是...

x86和RISC哪个更适合运行游戏?

于是人们想了一个方法,对一些比较常用的指令,比如积分、微分、乘除法等,干脆写一套标准的程序,留下输入数据的接口。这样就能够大幅度地降低编程中的难度,提高编程效率并增加其易用性。这个想法一提出,就得到了很多业内人士的认可,大家给这种想法取了一个名字,叫做“指令集”。指令集中包含了大量的基础运算的内容,...

尝试梳理下ARM处理器的发展历史?

支持8/16bit整数,可以实现4个8bit整数或者2个16bit整数的并行计算。 ARMv7主要特性 (1)高级SIMD:在ARM v7-A架构中,ARM进一步发展自身的SIMD指令集,并命名为NEON。这一代的指令集,有32个64bit的NEON向量寄存器,同时也支持单精度浮点。 (2)VFPv3/v4:浮点体系结构(VFP)为半精度、单精度和双精度浮点运算中的...

stm32f407和tms320f28335的对比

复制代码 F28335: F28335的FPU有加减乘法指令,都是双周期的,由于没有硬件除法指令,F28335这里是用软件模拟的浮点除法,汇编可以看到 LCR $div_f32.asm字样,需要19个时钟周期。例如:a = a * b,产生的汇编为:0087B2 E203 MOV32 *-SP[4], R0H 0087B4 E2AF MOV32 R1H, *-SP...

ARM处理器的浮点运算能力已远超X86处理器?

现在来看,ARM与x86处理器的浮点计算能力的差距还很巨大,不仅仅由架构,也与两者的应用方向不同有关

DSP,ARM和单片机的区别

单片机的工作ARM和DSP都能作,单片机对于数字计算方面的指令少得多,DSP为了进行快速的数字计算,提高常用的信号处理算法的效率,加入了很多指令,比如单周期乘加指令、逆序加减指令,块重复指令等等,甚至将很多常用的由几个操作组成的一个序列专门设计一个指令可以一周期完成,极大的提高了信号处理的速度。...

手机都有8核的 ,电脑为什么没有, 难道电脑最终会被手机取代吗?

在对实时性要求不高的场合可以代替浮点专用处理器使用。intel和AMD为x86复杂指令集,在流水线和缓存技术上大幅超越手机CPU。\x0d\x0a\x0d\x0a提供两个对比数据:\x0d\x0a\x0d\x0a1.3G左右的ARM处理器浮点能力在10MFLOPs/s左右;2.5G的intel四核Q8300在25GFLOPs/s左右,差了2500倍,就算...

单精度浮点和双精度浮点指令 三菱取绝对值指令 s7200中绝对值指令 绝对值指令 汇编求绝对值指令 绝对值编程指令是什么 汇编语言绝对值指令 浮点指令 浮点比较大小指令
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
阿里云盘怎么样? 40匹冷库低温要多大的铜管 华为手机录音怎么转换格式 黑龙江驾驶证能转回梅河口吗 云南校园生活网网站服务内容 云南校园生活网网站简介 沈阳民宅可以办营业执照吗 合肥奥帅消防工程有限公司怎么样? ...已买硬盘座,一定要格式化的吗,不是插上就用的吗,谢谢 上海陆家嘴鲜花哪家好 权利的游戏迅雷下载怎么突然下不了了 rfs苹果版从哪下? rfs模拟飞行怎么关闭屏幕上那些绿色坐标? rfs苹果手机怎么下载 rfs怎么获得免费pro rfs为什么玩不了多人飞行 同一个平面两侧两边槽宽对称度需要乘以二吗? RFS飞行模式在哪下载 什么是RFS啊? rfs降落后应该怎么做? RFS如何快速到达目的地 rfs怎么调节尾翼 口红是用什么东西做出来的? 安卓RFS怎么起飞,怎么加入插件比如地勤,接机廊, 乘客,以及中国机场等等?试玩版怎么唤起Pro 低温树蜡多少钱一吨 rfs飞行怎么设置乘客? 白蜂蜡和小烛树蜡哪个更硬 什么蜡可以代替小烛树蜡 木蜡油是什么东西? 2020年QQ新号怎么设置资料背景图片? 48音素分类结构图 手机如何测量土地面积? 长虹冷风扇RFS—20怎样直接加水就可以用了吗 请问华为笔记本官方驱动怎么下载? 贷款的国家基准利率是多少?上浮百分之十五又是多少? 为什么华为笔记本电脑突然找不到网络驱动? 华为笔记本电脑怎样下载打印机驱动? 利率4.95上浮15是多少 银行贷款50万15年还,利率4.9%上浮15%,应还利息多少 利率上浮15%是个什么概念 华为笔记本电脑管家驱动为什么1个小时还驱动不完呢? 贷款利率上浮15%,算不算多 银行贷款上浮5%,什么意思,现在利率是4.9%,上浮5%是多少,怎么计算?谢谢... 华为官网支持页面可以搜到华为电脑的驱动吗 商业贷款利率是4.9是多少数 商业贷款的基准利率是4.9%,是什么意思 贷款4.9%上浮10、月利率是多少呀 冰箱有嗡嗡响,但是开门就消失是什么原因? 冰箱一直嗡嗡响,左侧为什么总是发烫呢? 我家容升冰箱一直嗡嗡响不停,而且外面很热是什么原因呀?