Vdsp(bf561)中的浮点运算(16):fract2x16类型
由于BF561内部带有两个16位的MAC,因此它将可以在一个周期内进行两个fract16类型的运算。
为适应这种特性,vdsp引入了一个称之为fract2x16的类型。它其实是定义为一个int类型的整数,但是其实际意义却是要用高低16位分别来表示两个fract16类型。
typedef int _raw32;
typedef _raw32 raw2x16;
typedef raw2x16 ...
控制台聊天程序实例代码
今天在网上找到了个控制台聊天程序实例,感觉不错,稍微做些修改,以作收藏之用。
服务器端程序代码:
view plaincopy to clipboardprint?
// 2009-06-28
#pragma comment(lib,"ws2_32.lib")
#include
#include
#include
using namespace std;
string strCurMsg="";
void recvProc(SOCKET sockConnect)
{
char msgRcv[100] ...
Vdsp(bf561)中的浮点运算(15):vdsp库的一个BUG
在写完fract除法之后,偶然发现在vdsp的一个头文件中提供了fract16除法运算的函数,这个文件就是VisualDSP 5.0\Blackfin\include\fract_math.h:
/* Produces a result which is the fractional division of f1 by f2. Not a builtin
* as written in C code. */
#pragma inline
#pragma always_inline
static fract16 div_ ...
Qt学习之路(8):创建一个对话框(下)
接着前一篇,下面是源代码部分:
#include
#include "finddialog.h"
FindDialog::FindDialog(QWidget *parent)
: QDialog(parent)
{
label = new QLabel(tr("Find &what:"));
lineEdit = new QLineEdit;
label->setBuddy(lineEdit);
caseCheckBox = new QCheckBox(tr("Match &case"));
backwardCheckBox = new QCheckBox(t ...
c/c++支持可变参数的函数
一、为什么要使用可变参数的函数?
一般我们编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定,因此c语言引入可变参数函数。这也是c功能强大的一个方面,其它某些语言,比如fortran就没有这个功能。
典型的可变参数函数 ...
Vdsp(bf561)中的浮点运算(13):fract16乘法运算
vdsp提供了三种不同的方式进行fract16的乘法运算。
1.1 mult_fr1x16函数
这个函数定义为:
#pragma inline
#pragma always_inline
static fract16 mult_fr1x16(fract16 __a, fract16 __b) {
fract16 __rval = __builtin_mult_fr1x16(__a, __b);
return __rval;
}
从这里可以看出我们实际可以使用__builtin_mult_fr1 ...
Qt学习之路(5):组件布局
顾名思义,绝对定位就是使用最原始的定位方法,给出这个组件的坐标和长宽值。这样,Qt就知道该把组件放在哪里,以及怎么设置组件的大小了。但是这样做的一个问题是,如果用户改变了窗口大小,比如点击了最大化或者拖动窗口边缘,这时,你就要自己编写相应的函数来响应这些变化,以避免那些组件还只是静静地呆在一个角落。或 ...
Vdsp(bf561)中的浮点运算(9):long double和float的比较
在默认情况下,vdsp认为double和float这两种类型是一样的,因此我们比较long double和float。
1.1 类型表示
下面是两种类型的数据表示:
1.2 正常情况下的运算效率
下表给出两种类型下做运算的效率比较,选择High performance
狂汗,这个long double做除法也太狠了点!
下表给出两种类型下做运算的效率比较,选择Strict I ...
Vdsp(bf561)中的浮点运算(6):float加减运算
一直以为float加减运算很简单,无非就是将之转换为__float32_add和__float32_sub这两个函数调用而已,然后用软件模拟进行加减运算。但真的如此简单吗?当一些让人不太舒服的条件出现的时候,还是如此吗?
1.1 Vdsp对float加减运算的处理
在vdsp下,可以很简单地用:
float add(float x, float y)
{
float r = x + y;
return ...
Vdsp(bf561)中的浮点运算(5):float类型表示总结
1.1 float的疑问
写一行很简单的C代码:
float a = 1234.56;
用vdsp编译后的汇编代码为:
R0 = 20972 ( X ) ;
R0.H = 17562 ;
[ FP + 0x10 ] = R0 ;
有点看不懂,呵呵,R0的值转换为十六进制就是0x449A51EC。根据vdsp文档的说法,其单精度浮点数格式为:
浮点数计算公式:
将0x449A51EC转换为二进制:
0100 0100 1001 101 ...
TLocateOptions的用法
void __fastcall TForm1::Button1Click(TObject *Sender)
{
bool FindSuccess;
TLocateOptions SearchOptions;
SearchOptionsLocate("字段名",Edit1->Text,SearchOptions);
if(FindSuccess)
ShowMessage("ok");
CB编译好的Exe程序运行会提示找不到xx库之类的解决方法
CB的完全编译问题,大概是初学BCB的朋友们问的最多的问题。
症状就是编译好的Exe程序拷到没有安装BCB的机器上运行会提示找不到xx库之类的,解决方法:
在project->Options->Compiler中点击Release,
在project->Options->Packages中取消Builder with runtime packages的对钩
在project->Options->Linker中取消Use dynamic RT ...
Win32调试接口设计与实现浅析
所谓调试器实际上是一个很宽泛的概念,凡是能够以某种形式监控其他程序执行过程的程序,都可以泛称为调试器。在Windows平台上,根据调试器的实现原理大概可以将之分为三类:内核态调试器、用户态调试器和伪代码调试器。
内核态调试器直接工作在操作系统内核一级,在硬件与操作系统之间针对系统核心或驱动进行调试,常见的有 ...
解决TCP网络传输“粘包”问题
当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。UDP(user datagram protocol,用户数据报协议)是无连接的,提供高效率服务。在实际工程应用 ...
用CB实现图像的特技显示
在网页、软件和游戏中,我们经常可以看到图像的各种特技显示,如中心扩散、百叶窗帘、右下推出等,这种动感图像显示,往往给人一种赏心悦目的感觉,给我们的应用程序增加了一些美感。在C++ Builder中,我们可以很容易地实现这些功能。下面以一个具体的例子,介绍实现中心扩散和百叶窗帘两种显示技巧,并说明在C++ Builder中 ...
C++学习摘要之一:类和对象
第一章 类和对象
类和对象是面向对象程序设计的两个最基本、最重要的概念。所谓对象就是客观事务在计算机中的抽象描述;而所谓类则是对具有相似属性和行为的一组对象的统一描述。从程序设计语言的角度来说,类是一种数据类型,而对象是具有这种类型的变量。
1.类的定义
类定义的一般形式为:
class 类名
{
private:
数据成 ...
在C++Builder利用NetBIOS进行编程
NetBIOS是网络基本的输入/输出系统,是一个应用于程序接口,用于数据源与目的地之间的数据交换。即能够访问支持计算机应用程序和设备通信时要用到的各种服务,具有明确而简单的通信协议,必须用特殊的命令序列来调用NetBIOS服务。
首先我们来了解一下NetBIOS的基本知识。
一.NetBIOS 的基础
1。在网络层次中,NetBIOS是处于 ...
关于MD5的一些知识
MD5简介
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。
Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的 ...
用游戏操纵杆摸拟鼠标
要编写一个支持游戏操纵杆的应用程序,首先必须要捕获游戏操纵杆,接着要处理Windows发送给程序窗口的操纵杆消息,最后使用完操纵杆后,还应将捕获的操纵杆资源释放。
调用API函数joySetCapture能捕获游戏操纵杆。调用joySetCapture函数后,操纵杆产生的所有消息将会发送到指定的窗口。它的原型为:
MMRESULT joySetCapture ...
用任务条跟踪文件下载
注意:本文代码不是最快的和最有效的代码。我有一套更快的代码。希望你在阅读本文之后能编写出自己的高效代码。
概要
程序用线程管理下载过程,这样主程序就不会被封闭,程序还有中止下载的功能。下载过程在线程中单独进行,并随时刷新屏幕上的任务条状态。
创建下载文件:
CInternetSession netSession;
CStdioFile *fil ...