最新回复
变量的存储类型:
外部变量内部变量在所有函数之前定义的变量
在某个函数内定义的变量
全局变量
Global
开辟内存空间后自始至终都存在
其他文件需访问用extern声明
动态变量
Auto
先用先开辟,用完之后不保存
没有记忆
全局静态变量
Static
开辟内存空间后自始至终都存在
不同的是,
对于global,其他文件还可以访问
对于static,退出被定义文件后,值仍存在,但其他文件不可以访问
局部静态变量
Static
开辟内存空间后自始至终都存在
值保留,只有被定义函数可以访问,其他函数不能访问
寄存器变量
Register
作用范围同auto型变量
用于使用频率高的变量
但通用寄存器个数很有限,应慎用
Keil Cx51编译器还扩展了变量的数据类型:bit, sbit, sfr, sfr16
Keil Cx51还允许说明存储器类型:
存储器类型
说明
DATA
直接寻址的片内RAM(128B),访问速度最快
BDATA
可位寻址的片内RAM(16B)
IDATA
间接访问的片内RAM(256B)
PDATA
分页寻址的片外RAM,(256B)MOVX @Ri指令
XDATA
片外RAM(64KB),MOVX @DPTR指令
CODE
ROM,MOVC指令
这样,一个变量的属性就变成了三个:
存储类型 数据类型 存储器类型 变量名;
那么,我就有了这样的理解:
变量——等价于一个存储单元;
存储类型——规定了这个存储单元存在的时间;
数据类型——规定了这个存储单元的长度;
存储器类型——规定了这个存储单元的大概位置;
如果这个位置还要更精确一些,为了便于进行下一步的操作,还可以指定变量的绝对地址。
这样好像就有了一种立体感。
不过还想再问几个问题:
1、
越来越觉得编译器太神奇了,竟然能够进行翻译!一种用人脑来完成都要动脑筋的东西~~究竟是如何实现的?如果要了解的话是不是应该看编译看编译原理方面的书籍?
2、为什么通用寄存器的存取速度快?在结构上它和其他存储器比如内存有什么区别呢?
恩,也恩,把这些问题也提给自己,以后慢慢解决。自己的一点点理解,希望得到大家的指正,谢谢
详情
回复
发表于 2008-8-26 23:28
| |
|
|
此帖出自模拟电子论坛
| ||
|
||
| |
|
|
此帖出自模拟电子论坛
| ||
|
||
回复 4楼仙猫 的帖子
此帖出自模拟电子论坛
| ||
|
||
此帖出自模拟电子论坛
| ||
|
||
回复 6楼仙猫 的帖子
此帖出自模拟电子论坛
| ||
|
||
说d都对
此帖出自模拟电子论坛
| ||
|
||
关于为什么叫background
此帖出自模拟电子论坛
| ||
|
||
| |
|
|
| |
|
|
| |
|
|
又总结了一点东西
此帖出自模拟电子论坛
| ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
EEWorld Datasheet 技术支持