快乐虾http://blog.csdn.net/lights_joy/lights@hb165.com本文适用于ADI BF561 DSP优视BF561EVB开发板Visual DSP++ 5.0 (update 5)欢迎转载,但请保留作者信息在vdsp提供的《VisualDSP++ 5.0 C/C++ Compiler and Library Manual for Blackfin Processors Revision 5.1, August 2008》中列出了vdsp支持的所有数据类型,其中与浮点有点的类型有:TypeBit SizeNumber Representationsizeof returnsdouble32 bits 32-bit IEEE single-precision4float32 bits 32-bit IEEE single-precision4double64 bits 64-bit IEEE double-precision8long double64 bits 64-bit IEEE8fract1616 bits signed1.15 fract2fract3232 bits signed1.31 fract4其中前4个采用了IEEE的格式,而fract则是ADI自己定义的格式。在这里容易混淆的一点是通过project options -> compilers中的参数配置可以控制使用的double类型是32位的还是64位的,可恶的是在默认情况下,vdsp是将double当成32位来处理的,这对于某些科学计算相关的代码来说简直是一个噩梦!当然了,由于bf561硬件本身不支持浮点运算,只能通过软件模拟来实现,所以文档中这样解释为什么默认情况下要使用32位的double:On Blackfin processors, the float data type is 32 bits, and the double data type default size is 32 bits. This size is chosen because it is the most efficient. The 64-bit long double data type is available if more precision is needed, although this is more costly because the type exceeds the data sizes supported natively by hardware. 似乎勉强也说得过去。但由此造成的一个问题是:如果在要使用的dlb库和调用者之间是使用不同的选项来编译的,那么将造成程序运行时不可避免的错误!