社区
汇编语言
帖子详情
请问下 ARM 的VFP指令如何用,谢谢!
sno_guo
2012-12-11 05:35:45
我想在我的代码中加入浮点计算, 这样我使用到inline 嵌入到gcc中, 如果正常的程序(非vfp):我会这样:
__asm__(
"add %0, %1,%2,lsl #16\n"
:"=r"(ret)
:"r"(a),"r"(b)
);
可是如果是浮点计算的话,应该怎么做的, 谁能给个例子,谢谢!
我没有从google上搜到相关的例子,谢谢!
...全文
608
10
打赏
收藏
请问下 ARM 的VFP指令如何用,谢谢!
我想在我的代码中加入浮点计算, 这样我使用到inline 嵌入到gcc中, 如果正常的程序(非vfp):我会这样: __asm__( "add %0, %1,%2,lsl #16\n" :"=r"(ret) :"r"(a),"r"(b) ); 可是如果是浮点计算的话,应该怎么做的, 谁能给个例子,谢谢! 我没有从google上搜到相关的例子,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cimeng2013
2015-05-09
打赏
举报
回复
还记得咋解决的吗,博客里面没找到
sno_guo
2013-01-06
打赏
举报
回复
自己看明白了,如果谁刚好也不懂不话,可以看我的博客。 里面说的很清楚,有例子。
sno_guo
2012-12-31
打赏
举报
回复
有些计算是汇编做不了的,比如你要在一个有很多个大型结构体的函数中。使用汇编,怎么办,结构体中的每个元素的偏移地址是不知道的,那么只能使用inline汇编,这样就要使用到inline的汇编。
HMGuardian
2012-12-31
打赏
举报
回复
编译交叉编译工具链的时候使用选项"--with-float=hard"以生成支持硬件浮点的gcc 编译程序的时候使用选项“-mhard-float”以指明使用硬件浮点 呵呵,我自己也不清楚,木有用过,可以一试,注意浅尝则止……
lr2131
2012-12-30
打赏
举报
回复
C与汇编的混编有2中方法: 1.在C中用类似于__asm的关键字来插入汇编 2.在汇编文件*.s中用汇编编写代码,在C中调用。 我一般都是用第二种,上面帖子说的也是第二种。因为第一种有什么限制(不记得了,而且感觉确实第二种好用的多),你这是不是因为__asm的限制不知道,我一般都不采用第一种方式的,不是很清楚。
lr2131
2012-12-20
打赏
举报
回复
你的意思是说,已经在汇编文件中实现了汇编函数是吗?但只是不会在C文件中来调用这个汇编的函数是吗? 如果是这样,LZ应该问怎么在C中调用汇编。方法是: 1. 在汇编文件中写好汇编函数,自己注意寄存器的压栈。调用最好要服从APCS或ATPCS的要 求,说白了也就是函数传参的要求。汇编函数名也就是这个函数的lable,也即是起始 地址,假如说叫AssemblyFunction 2. 在这个汇编文件中的开头添加 EXPORT 汇编函数函数名,你这就该是 EXPORT AssemblyFunction 3. 在需要调用这个汇编函数的c文件或对应的头文件中声明: extern 函数返回类型 AssemblyFunction(形参列表); 如果有返回值,一般都是用R0返回的。
sno_guo
2012-12-20
打赏
举报
回复
等我明白了,我会贴出来的,呵呵
sno_guo
2012-12-20
打赏
举报
回复
哦,谢谢,我的意思是:怎样编写一个嵌入到C代码中的vfp指令,我试了很多方法,可是无法成功, 我上面有举例子的,呵呵 一般的arm指令 用__asm__(xxxxxx)这样就可以直接嵌入到C代码中,可是vfp指令却不行,不知道为什么 等我把这个弄明白了,再看看,呵呵,谢谢了
sno_guo
2012-12-12
打赏
举报
回复
谢谢回复,我用的cpu是有浮点运算的,我可以直接在.S文件中编写浮点的汇编函数,然后用CROSS-gcc编译,然后在板子上运行, 可是现在的情况是:我想嵌入到我的C代码中,这样就用到了嵌入的一些东西,不知道该如何做了,才来这里提问的,呵呵,
lr2131
2012-12-12
打赏
举报
回复
没有浮点数协处理器的CPU,处理浮点数的时候是用的软件模拟浮点数的。前一周的项目开发还遇到过这种问题,最后不用浮点数运算,生成的bin文件直接少了2K,可见这个软件模拟浮点数运算的代码量是很大的,当然这个和精度有关,精度越高,代码量越大。没有去看这个软件模拟浮点数运算的汇编代码。LZ可以用C写一下用到浮点数运算的代码,然后再调试或生成的汇编中去看这个是怎么做的。
RealView 编译工具 汇编程序指南
本手册由以下章节组成: 第 1 章 简介 本章简要介绍了 RVCT 汇编程序和汇编语言。 第 2 章 编写
ARM
汇编语言 本章提供了可帮助您使用
ARM
汇编程序和汇编语言的指导信息。 第 3 章 汇编程序参考 本章介绍了有关
ARM
汇编程序提供的语法和结构的参考材料。 第 4 章
ARM
和 Thumb
指令
本章介绍了有关
ARM
和 Thumb
指令
集的参考材料,涵盖了 Thumb-2 和以前版本的 Thumb 以及 Thumb-2EE。 第 5 章 NEON 和
VFP
编程 本章介绍了有关
ARM
NEON™ 技术和
VFP
指令
集的参考材料。 本 章还介绍了其他
VFP
特定的汇编语言信息。 第 6 章 无线 MMX 技术
指令
本章介绍了有关
ARM
对无线 MMX™ 技术的支持的参考材料。 第 7 章
指令
参考 本章介绍了有关可在
ARM
汇编程序
arm
asm 中使用的汇编程序
指令
的参考材料。
ARM
_Architecture_Reference_Manual_v7a-v7r_he.zip
arm
v7a和r架构资料,官方原版。本手册描述了
ARM
架构v7,
ARM
v7的A和R配置文件。它包括以下描述:处理器
指令
集:原始
ARM
指令
集、高代码密度拇指
指令
集、ThumbEE
指令
集,其中包括对即时(JIT)或提前(AOT)编译的特定支持。决定处理器如何工作的模式和状态,包括当前的执行权限和安全性。除了模型。
ARM
v7-R体系结构概要文件定义了一个受保护的内存系统体系结构(PMSA)。程序员模型,并使用协处理器接口来访问控制大多数处理器和内存系统特性的系统控制寄存器。可选浮点(
VFP
)扩展,它提供了高性能浮点
指令
支持:单精度和双精度操作在双精度、单精度和半精度浮点值之间进行转换。可选的高级SIMD扩展,提供高性能的整数和单精度浮点向量操作。可选的安全扩展,促进安全应用程序的开发。可选的虚拟化扩展,支持非安全操作的虚拟化。提供对处理器中调试特性的软件访问的调试体系结构。
android vitamio dome
Vitamio 是一款 Android 平台上的全能多媒体开发框架。Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐。Vitamio 能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频,还可以在 Android 上支持 MMS, RTSP, RTMP, HLS(m3u8) 等常见的多种视频流媒体协议,包括点播与直播。 支持
ARM
v6 和
ARM
v7 两种
ARM
CPU,同时对
VFP
,
VFP
v3, NEON 等
指令
集都做相应优化。支持 Android 2.1+ 系统,支持超过 95% 的 Android 市场。同时 Android 2.1 之前的系统也基本支持
业余时间优化的android2.3的H264解码器
自己利用业余优化了一个h264的解码器,只使用在
arm
v6架构的android2.3版本的手机上, 优化的内容是:完全用汇编重写了解码端h264的预测算法、IDCT算法、反量化算法、MC算法、loop_filter算法。 我的测试: 手机:C8650,配置:CPU:MSM7627-600MHZ,RAM:512M,android2.3.6 测试结果(baseline,mainline,highline解码速度相差不是很大): 352*288的H264视频:完全流畅播放 512*288的H264视频:每秒播放20--25帧 704*576的H264视频:每秒播放20帧左右 1280*544的H264视频:每秒解码12-15帧,播放8--9帧(主要是YUV420转rgb565这里太浪费时间,还在优化中) 1280*720的H264视频:每秒解码13-16帧,播放8--10帧(也是YUV420转rgb565这里浪费时间), 测试结果:1280*544和1280*720的视频文件中,我的解码器要远远优于市面上的mobo播放器,开讯播放器等播放器的解码播放速度。 你如果要测试,则:需要您的手机CPU是
arm
v6架构的,并且支持
vfp
v3。 视频条件: 视频采样点是8位,完全符合H264编码的视频文件(打包成多媒体格式也可以),采样格式是YUV420。(因为一直从事安防行业,就只按照安防的通用格式来) 下一步的计划是:利用
ARM
的
vfp
协处理器汇编
指令
,争取把YUV420转RGB565的转换速度优化到 稍后上传一些一些测试文件,欢迎下载测试(可点击我的名字,查找),
谢谢
我会一直在H264的解码算法这块进行优化,不做播放器,只做高性能的H264解码器,如果您有兴趣,希望和我联系:sno_guo#163.com
谢谢
arm
a模型matlab代码-gnss-sdr:恩斯布罗
arm
a模型matlab代码 欢迎使用GNSS-SDR! 请访问以获取有关此开源GNSS软件定义的接收器的更多信息。 如果您对GNSS-SDR有疑问,请在此处发表您的问题。 如何建立GNSS-SDR 本节介绍如何在GNU / Linux或中设置编译环境以及如何构建GNSS-SDR。 另请参阅。 GNU / Linux 经过测试的发行版:Ubuntu 14.04 LTS和,Debian 8.0“ jessie”和Linaro 15.03 已知有效,但未经持续测试:Arch Linux,Fedora和openSUSE 支持的微处理器架构: i386:Intel x86
指令
集(32位微处理器)。 amd64:也称为x86-64,x86
指令
集的64位版本,最初由AMD创建并由AMD,Intel,VIA等实现。
arm
el:
ARM
嵌入式ABI,在
ARM
v4t及更高版本上受支持。
arm
hf:
ARM
硬浮点,
ARM
v7 +
VFP
3-D16浮点硬件扩展+ Thumb-2
指令
集及更高版本。
arm
64:
ARM
64位或
ARM
v8。 mips:MIPS架构(big-endian,例如SGI制造的)。
汇编语言
21,458
社区成员
41,603
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章