请问下 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上搜到相关的例子,谢谢!
...全文
607 10 打赏 收藏 转发到动态 举报
写回复
用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写一下用到浮点数运算的代码,然后再调试或生成的汇编中去看这个是怎么做的。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧