当前位置:首页 > 单片机 > 单片机
[导读]C51编译器支持用星号(*)进行指针声明。你可以用指针完成在标准C语言中有的所有操作。另外,由于8051及其派生系列所具有的独特结构,C51编译器支持两种不同类型的指针:存储器指针和通用指针。通用指针通用或未定型

C51编译器支持用星号(*)进行指针声明。你可以用指针完成在标准C语言中有的所有操作。

另外,由于8051及其派生系列所具有的独特结构,C51编译器支持两种不同类型的指针:存储器指针和通用指针。
通用指针
通用或未定型的指针的声明和标准C语言中一样。如:
char *s; /* string ptr */
int *numptr; /* int ptr */
long *state; /* long ptr */
通用指针总是需要三个字节来存储。第一个字节是用来表示存储器类型,第二个字节是指针的高字节,第三字节是指针的低字节。
通用指针可以用来访问所有类型的变量,而不管变量存储在哪个存储空间中。因而许多库函数都使用通用指针。通过使用通用指针,一个函数可以访问数据,而不用考虑它存储在什么存储器中。
通用指针很方便,但是也很慢。在所指向目标的存储空间不明确的情况下,它们用的最多。
存储器指针
存储器指针或类型确定的指针在定义时包括一个存储器类型说明,并且总是指向此 说明的特定存储器空间。例如:
char data *str; /* ptr to string in data */
int xdata *numtab; /* ptr to int(s) in xdata */
long code *powtab; /* ptr to long(s) in code */
正是由于存储器类型在编译时已经确定,通用指针中用来表示存储器类型的字节就不再需要了。
指向idata,data,bdata和pdata的存储器指针用一个字节保存,指向code和xdata的存储器指针用两个字节保存。使用存储器指针比通用指针效率要高,速度要快。当然,存储器指针的使用不是很方便。在所指向目标的存储空间明确并不会变化的情况下,它们用的最多。
存储器指针和通用指针的比较
使用存储器指针可以显著的提高8051 C程序的运行速度。
下面的示例程序说明了使用不同的指针在代码长度,占用数据空间和运行时间上的不同。
Description Idata Pointer Xdata Pointer Generic Pointer
C源程序 idata *ip; char xdata *xp; char *p;
char val; har val; char val;
val = *ip; val = *xp; val = *xp;
编译后的
代码 MOV R0,ip MOV DPL,xp +1 MOV R1,p + 2
MOV val,@R0 MOV DPH,xp MOV R2,p + 1
MOV A,@DPTR MOV R3,p
MOV val,A CALL CLDPTR
指针大小 1 byte 2 byte 3 byte
代码长度 4 bytes 9 bytes 11 bytes + library call
执行时间 4 cycles 7 cycles 13 cycles


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

最新消息,通用汽车旗下自动驾驶部门Cruise当地时间周四宣布将裁员24%,并将努力重组业务。据悉,本次裁员主要来自商业运营和相关企业职能部门。Cruise声称本次裁员结束了一部分支持无人驾驶业务的临时工的工作。

关键字: 通用 自动驾驶 Cruise 裁员

单片机内部有很多的特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的...

关键字: C51 数据类型 扩充定义

数据元(Data Element),也称为数据元素,是用一组属性描述其定义、标识、表示和允许值的数据单元,在一定语境下,通常用于构建一个语义正确、独立且无歧义的特定概念语义的信息单元。数据元可以理解为数据的基本单元,将若...

关键字: C51 数据类型

在如今的“车市寒冬”中,存在着这样一种怪象:诸如通用、大众等常见品牌的销量出现明显下滑,而像奔驰、宝马、奥迪等豪华品牌的销量反而有所上升,它们所呈现出的两种极端,也在预示着未来汽车市场的整体走向。客观来讲,国内汽车市场已...

关键字: 通用 SUV 大众

以往车企与供应商合作,一般是主机厂提芯片、软件或集成的需求,比如很多ECU,有供应商或者Tier1去做,芯片来自不同芯片厂商,博世、大陆作为集成商去做Tier。

关键字: 通用 汽车 芯片价格

8月19日报道,通用汽车公司与韩国LG新能源的合资公司的一位发言人表示,公司正考虑在美国印第安纳州选址建立第四家美国电池工厂。

关键字: 通用 LG 电池

7 月 21 日消息,据国外媒体报道,通用汽车 ( General Motors ) 和福特汽车 ( Ford Motor ) 已向美国汽车安全监管机构申请豁免,允许部署一定数量没有方向盘和刹车踏板等人为控制装置的自动驾...

关键字: 通用 福特 自动驾驶

▼点击下方名片,关注公众号▼欢迎关注【玩转单片机与嵌入式】公众号,回复关键字获取更多免费资料。回复【加群】,限时免费进入知识共享群;回复【3D封装库】,常用元器件的3D封装库;回复【电容】,获取电容、元器件选型相关的内容...

关键字: C51 MDK RealView

摘要:介绍了通用物联网综合信息管理平台的技术架构,对包括感知层的数据采集汇接设备、网络层的多协议中间件和应用层的跨平台管理系统软件进行了深入研究,给出了Siteview6200型C5IiotWare网络数据采集汇接设备、...

关键字: 物联网 信息管理平台 技术架构 通用

在Keil C51软件中51单片机的中断服务和外设驱动程序的开发

关键字: keil5 编译 C51
关闭
关闭