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

ARM VFP寄存器与指令集详解

1. 寄存器文件

ARM芯片的加载和存储架构在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 value
bp:
BL
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值