9163|11

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用keil c 编译程序的时候,分别选择small模式和compact模式,出现不同的结果。 [复制链接]

同样的代码,用small模式是一种结果,用compact模式是另外一种结果,请高手给指点下,这是怎么回事?

最新回复

请问一下我下面出了什么问题,谢谢!GETMENUITEMS是一个递归函数,GETTAGTEXT,SKIPTAG,SKIPITEM等表示函数 small模式下编译,选择的是AT89c52芯片 Build target 'Target 1 compiling main.c... compiling dispLCD.c.. compiling getkeyscan.c... compiling menuHTML.c... linking... *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS   SEGMENT: ?PR?_?GETMENUITEMS?MENUHTML *** ERROR L107: ADDRESS SPACE OVERFLOW   SPACE:   DATA       SEGMENT: ?DT?_GETTAGTEXT?MENUHTML   LENGTH:  0006H *** ERROR L107: ADDRESS SPACE OVERFLOW    SPACE:   DATA        SEGMENT: ?DT?_SKIPITEM?MENUHTML     LENGTH:  0005H *** ERROR L107: ADDRESS SPACE OVERFLOW     SPACE:   DATA        SEGMENT: ?DT?_NEXTTAG?MENUHTML   LENGTH:  0003H *** ERROR L107: ADDRESS SPACE OVERFLOW   SPACE:   DATA      SEGMENT: ?DT?_SKIPTAG?MENUHTML    LENGTH:  0003H *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE:   DATA         SEGMENT: ?DT?_GETTAGNAME?MENUHTML      LENGTH:  0003H *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL   SYMBOL:  _GETMENUITEMS    MODULE:  main.obj (MAIN) *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL    SYMBOL:  ?_GETMENUITEMS?BYTE   MODULE:  main.obj (MAIN) *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL    SYMBOL:  ?_GETMENUITEMS?BYTE   MODULE:  main.obj (MAIN)      ADDRESS: 08A5H *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL    SYMBOL:  ?_GETMENUITEMS?BYTE    MODULE:  main.obj (MAIN)   ADDRESS: 08A8H *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL   SYMBOL:  ?_GETMENUITEMS?BYTE     MODULE:  main.obj (MAIN)      ADDRESS: 08ABH *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL      SYMBOL:  _GETMENUITEMS     MODULE:  main.obj (MAIN)      ADDRESS: 08B4H Program Size: data=148.0 xdata=0 code=4079 Target not created  详情 回复 发表于 2012-5-5 10:32
点赞 关注

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
compact模式采用紧凑存储模式,所有的函数和过程的变量 及局部数据段被定义在51的外部数据存储器


 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
而small小存储模式,相反是内部数据存储器
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼上你说的我明白,我没有外接RAM,改怎么解决我的问题呢?如果不用compact类型,编译就无法通过。可能是我的变量太多了。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
compact好像一起不好使,把所有的变量都加指定位置,或是根据.lst文件查看是哪一种内存用超了,可以优化的。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 
感谢4楼,我把.lst文件最后的部分贴出来,是应该看这部分吗?应该怎么样优化呢?能说的详细些吗?
MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1616    ----
   CONSTANT SIZE    =    286    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     89      43
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

7
 
把一些变量定位到idata中区就行了,如uchar idata i;
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

8
 
SMALL 变量只用/优先IDATA区
compact 变量只用/优先PDATA区
LARGE 变量只用/优先XDATA区
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

9
 
***************************************************************************

思想决定行动,行动决定习惯,习惯决定命运.
程序员在深圳QQ群,交流产生思想碰撞.

部份专业群:
程序员在深圳c++群15195967
程序员在深圳英语学习群:23864353
程序员在深圳c++Ⅱ17409451
程序员在深圳嵌入式开发群37489763
程序员在深圳移动开发群31501597
程序员在深圳创业群33653422

部份高级程序员群:
高级群I:17538442
高级群II:7120862

部份初、中级程序员群:
第三群:2650485
第五群:29537639
第四群:28702746
第六群:10590618
第七群:10543585
第八群:12006492
第九群:19063074
第十群:2883885
第十一群:25460595
第十二群:9663807

深圳程序员QQ群联盟成立三年多,拥有三十个以上的QQ群,人数超二千多人,大量经验丰富的老手,成员从业于大公司(如微软、IBM,SUN,华为

)、来自国内著名高校和研究院成员,和有丰富实践经验的高级程序员、系统分析员(包括参加过上亿元的项目的架构师),有很热爱技术的成员

(包括自己写操作系统),还有少数女程序员。推荐:深程高级群I:17538442 深程高级群II:7120862 (深程高级群不欢迎新手,如果在深圳,月薪

6K以下的别加入) c++:15195967  mobile:31501597嵌入式:37489763  
——————————————————————————————————————————
如果你不是第一次看到此广告,说明我们最近T了一些人,因为我们要不断提升群的质量,保证名副其实.
-------------------------------------------------------------------------------------
在通过电邮、新闻组或者聊天室提出技术问题前,检查你有没有做到:
      1. 通读手册,试着自己找答案。
      2. 在FAQ里找答案(一份维护得好的FAQ可以包罗万象:)。
      3. 在网上搜索(个人推荐google~)。
      4. 向你身边精于此道的朋友打听。
我想我们首先应该靠自己解决问题,然后才是问!

*****************************************************************************
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

10
 
当然是这样了,
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 6 楼 acmilann 的回复:
把一些变量定位到idata中区就行了,如uchar idata i;
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

12
 

回复 7楼 micjevons 的帖子

请问一下我下面出了什么问题,谢谢!GETMENUITEMS是一个递归函数,GETTAGTEXT,SKIPTAG,SKIPITEM等表示函数

small模式下编译,选择的是AT89c52芯片
Build target 'Target 1
compiling main.c...
compiling dispLCD.c..
compiling getkeyscan.c...

compiling menuHTML.c...

linking...

*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
  SEGMENT: ?PR?_?GETMENUITEMS?MENUHTML
*** ERROR L107: ADDRESS SPACE OVERFLOW
  SPACE:   DATA   
   SEGMENT: ?DT?_GETTAGTEXT?MENUHTML
  LENGTH:  0006H

*** ERROR L107: ADDRESS SPACE OVERFLOW
   SPACE:   DATA   
    SEGMENT: ?DT?_SKIPITEM?MENUHTML
    LENGTH:  0005H

*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA   
    SEGMENT: ?DT?_NEXTTAG?MENUHTML
  LENGTH:  0003H
*** ERROR L107: ADDRESS SPACE OVERFLOW
  SPACE:   DATA   
  SEGMENT: ?DT?_SKIPTAG?MENUHTML
   LENGTH:  0003H
*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE:   DATA   
  
  SEGMENT: ?DT?_GETTAGNAME?MENUHTML
  
  LENGTH:  0003H
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
  SYMBOL:  _GETMENUITEMS
   MODULE:  main.obj (MAIN)
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
   SYMBOL:  ?_GETMENUITEMS?BYTE
  MODULE:  main.obj (MAIN)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
   SYMBOL:  ?_GETMENUITEMS?BYTE
  MODULE:  main.obj (MAIN)
  
  ADDRESS: 08A5H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
   SYMBOL:  ?_GETMENUITEMS?BYTE
   MODULE:  main.obj (MAIN)
  ADDRESS: 08A8H
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
  SYMBOL:  ?_GETMENUITEMS?BYTE
   
MODULE:  main.obj (MAIN)
  
  ADDRESS: 08ABH

*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
  
  SYMBOL:  _GETMENUITEMS
   
MODULE:  main.obj (MAIN)
  
  ADDRESS: 08B4H

Program Size: data=148.0 xdata=0 code=4079

Target not created
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【回帖赢京东卡】说说无线技术那些事儿
即日起—2月28日,参与回帖讨论都有机会赢取【30元京东卡】

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表