打印

请教Const变量问题

[复制链接]
5682|15
手机看帖
扫描二维码
随时随地手机跟帖
沙发
yewuyi| | 2008-11-28 10:42 | 只看该作者

看连接器的连接文件

如果连接文件把它连接到ROM,那么他就保存到ROM,如果连接到了RAM,那他就保存到RAM,一般默认的连接文件都把它定义到了ROM

使用特权

评论回复
板凳
jasonny|  楼主 | 2008-11-28 11:23 | 只看该作者

谢谢

感谢你的回帖

使用特权

评论回复
地板
古道热肠| | 2008-11-28 12:33 | 只看该作者

每个软件都有自己的约定,一定要仔细了解一下编译器特性

使用特权

评论回复
5
yewuyi| | 2008-11-28 14:03 | 只看该作者

哈哈,LS犯晕,这个是连接器中规定的

和编译器可是一点关系都没有

使用特权

评论回复
6
ayb_ice| | 2008-11-28 23:13 | 只看该作者

我觉得这个应该是和编译器有关

连接器只能相同的段落,如果首先不能确定性质怎么去连接。。。

使用特权

评论回复
7
yewuyi| | 2008-11-29 08:40 | 只看该作者

忽忽,有两个人都说俺错,难道俺理解错了?

俺闪。。。。。。



编译器只是把它当成一个代号,真实的向物理地址定位是连接器的工作。

使用特权

评论回复
8
Swd21ic| | 2008-11-29 10:04 | 只看该作者

re

应该LS是对的..像IAR就可以在xcl中改..

使用特权

评论回复
9
ayb_ice| | 2008-11-29 10:06 | 只看该作者

连接器不可能去改变段的性质

当然这只是我的理解而已。

使用特权

评论回复
10
yewuyi| | 2008-11-29 10:23 | 只看该作者

段的性质完全是由连接器定义的才对把。。。

呵呵,理解都不同啊,大家都完蛋了啊。。。

使用特权

评论回复
11
ayb_ice| | 2008-11-29 11:25 | 只看该作者

仅讨论技术而已

不想抬杆。
附图是是KEIL的帮助文档有关LX51作用的部分。
大家都知道编译器会为程序,变量分配段名,比如程序段?PR?。。。
数据?DT?。。。比如程序段?ID?。。。而且会有?DT?。。。 SEGMENT DATA这样的定义(就是定义数据段),这说明变量是在编译时决定存储在哪些空间,只是具体的地址由连接器定义。
当然这并不能说明CONST就一定由编译器完成,但是我觉得可能性很大,因为类似的问题没有理由用不同的方法处理。。。

使用特权

评论回复
12
yewuyi| | 2008-11-29 13:08 | 只看该作者

这东西有什么好抬杠的?

本来就是讨论的一个技术细节罢了。。。


俺的理解:const对编译器来说,根本没什么关系,对于编译器它只是一个标号,完全可以把这个标号改成别的符号,当然前提是编译器要能识别,因为有可能编译器程序员规定死了这个标号,这就是关键字拉,这玩意弄不弄清楚没多大关系,管它呢。。。

使用特权

评论回复
13
HWM| | 2008-11-29 13:48 | 只看该作者

原则上编译器输出浮动代码,再由连接器将其连接成可执行

至于由const关键字定义的变量存放在何处?又是由谁来确定的?没有定论,完全由具体编译和连接器的实现来定。对于某些狭义哈佛体系,程序和数据存储器的访问指令是完全不同的,固然只能由编译来确定变量的存储空间(如C51中的code关键字)。当然若是一般的通用结构,则完全可以到模块连接时由相关选择命令来确定具体的变量定位。因此,说const变量是由编译或连接来确定的话题没有实质性的意义,只要知道const变量的基本属性即可。

使用特权

评论回复
14
ayb_ice| | 2008-11-29 17:29 | 只看该作者

LS有一定的道理

使用特权

评论回复
15
古道热肠| | 2008-11-30 10:14 | 只看该作者

Const变量在AVR的ICC编译器中是先生成COde,再拷贝到RAM

软件会自动将指定的初始值拷贝到RAM中,通常用Const定义常量较为合适,要给变量赋初值,自己做一段初始化代码,清爽得很,免除诸多烦恼.

使用特权

评论回复
16
johnwjl| | 2008-11-30 18:49 | 只看该作者

const 只表示修饰的变量是不可改写的.

标准并没有规定const变量要放在RAM或ROM, 如果不加编译参数指定的话,就按编译器默认的const变量存储区(可能是RAM或ROM, 不同的编译器有不同)存放.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

56

帖子

0

粉丝