镜像博客
后台登陆
返回首页
经典文章 程序参考 电路收藏 开发工具 电子导航
 快速通道
-------------------------------------
 
 
 
 
 免费电话
-------------------------------------------------------------------------------------------------------------------------------------------------------------

校园梦网网络电话,中国最优秀的网络电话

 
 友情连接
-------------------------------------
 
 
 最新主题
-------------------------------------------------------------------------------------------------------------------------------------------------------------

Keil C51中对双数据指针的直接利用 ---1/3  2008-4-7 9:56:00 --- 免费电话想打就打

 

在8051体系中,数据指针DPTR作为一个特殊的16位寄存器,用于寻址64 KB的XDATA或CODE空间,通常它被当作一个16位指针,指向一个常数表。双数据指针可以改善同时有两个16位指针使用时的性能。作为一种增强特性,有许多8051派生型器件支持双数据指针。以宏晶科技STC89系列的产品为例,DPTR被增强为DPTR0和DPTR1两个,仍然使用原来的地址,用另外一个SFR AUXR1的0位DPS来切换。当DPS位为0时,所有对DPTR的操作使用DPTR0;当DPS位为1时,所有对DPTR的操作使用DPTR1。这样,通过一个简单的INC AUXR1指令,就可以来回切换两个数据指针。

  

1 Keil C51对双数据指针的支持情况

  

作为一个常用的C51编译器,Keil C51是支持双数据指针的,但并不是直接支持。如果要在C51程序中使用双数据指针,有一些特别的要求。

  

首先来看Keil C51是如何支持双数据指针的。

  

在Keil C51的编译器手册中指出:#pragma modp2可以打开Philips或Atmel WM系列器件中有双DPTR的型号,并且可以提升以下库函数的性能,包括:memcpy,memmove,memcmp,strcpy,strcmp。

  

Keil公司也提供了一个对照表,对比性能的提升。对比的型号是8051和Dallas 320,函数是memcpy块拷贝。对照表如下:

看起来似乎使用库函数就可以大幅度提高程序性能,但实际上这样做并不能保证一定可以提高程序性能。首先Dallas 320是4T的CPU,本身就比12T的8051快。其次,以memcpy为例,它的原型是void*memcpy(void*s1,const void*s2,int len),其传人参数有3个,合计8字节,要使用数据段来传送。在数据量少的情况下,参数传递的开销就有可能大过数据传递的开销。如果想要在数据块拷贝或移动的同时对数据加以处理,比如在一个目的数据块后面加上一个校验和,那么使用库函数是办不到的,只有通过循环来进行。当数据块的源和目都是16位地址时,每一次循环都会有两次对数据指针的赋值,在源地址和目地址之间来回切换,这时采用双数据指针会有效地提高程序性能。如果要在程序中直接生成使用双数据指针的代码,目前没有直接的编译指令。Keil公司在它的网站上曾说过多数据指针支持库函数,并且目前也未打算在编泽器中直接支持多数据指针。

 
载入中...
 
   文章来源网络如无您的大名或您不同意我的收藏请到: 白沙的香烟盒管理之吧  告知白沙,我会做尽快处理!
------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
  • 标签:KEIL C51 双数据指针 
  • 发表评论:
    载入中...
     
     
     
     统计信息
    -------------------------------------
     
     免费电话
    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    校园梦网网络电话,中国最优秀的网络电话