C51 提供一个3字节的通用存储器指针,通用指针的头一个字节表明指针所指的存储区空间,另外两个字节存储16位偏移量对于DATA IDATA 和PDATA 段只需要8位偏移量,Keil允许使用者规定指针指向的存储段这种指针叫具体指针,使用具体指针的好处是节省了存储空间,编译器不用为存储器选择和决定正确的存储器操作指令产生代码。这样就使代码更加简短,但你必须保证指针不指向你所声明的存储区以外的地方,否则会产生错误,而且很难调试。
下面的例子反映出使用具体指针比使用通用指针更加高效,使用通用指针的第一个循环需要378个处理周期,使用具体指针只需要 151 个处理周期
指针类型 大小
通用指针 3 字节
XDATA指针 2 字节
CODE 指针 2 字节
IDATA指针 1 字节
DATA指针 1 字节
PDATA指针 1 字节