20、ARM VFP寄存器与指令集详解

ARM VFP寄存器与指令集详解

1. VFP寄存器文件

ARM芯片的加载和存储架构在VFP(向量浮点单元)中得以延续,为处理浮点值,VFP专门提供了一组寄存器。这些寄存器共有32个,前缀为S,编号从S0 - S31。它们用于保存单精度值,因为每个寄存器都是一个字宽。对于双精度数的操作,这些寄存器可以成对组合,形成最多16个双字宽的寄存器,用D表示,编号从D0到D15。

需要明确的是,这些寄存器本质上是相同的,尽管寄存器中的值可以是单精度或双精度,但每次只能包含一个值。例如,S0和S1可以单独用于存储两个单精度值,也可以组合成D0用于存储一个双精度值。如果D0加载了一个值,那么S0和S1的内容将被清除。

这些寄存器根据用途分为标量寄存器(S0 - S7 / D0 - D3)和向量寄存器组(S8 - S31 / D4 - D15),不同的分组决定了它们的访问方式。

2. 管理与打印浮点值

下面是一个使用 printf 显示浮点值的简单示例代码:

/* Printing a floating-point number */ 
.global main
.func main
main:
LDR R1, addr_value1 @ Get addr of value1
VLDR S14, [R1] @ Move value1 into S14
VCVT.F64.F32 D5, S14 @ Convert to B64
LDR R0, =string @ point R0 to string
VMOV R2, R3, D5 @ Load va
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值