这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 【求助】程序变量空间的计算

共5条 1/1 1 跳转至

【求助】程序变量空间的计算

高工
2012-09-13 22:01:23     打赏
程序是这么写的:
STACK    .usect    "STACK",10H    ;引号中的STACK是段名,对应CMD文件中的一个段
        .bss a,4                ;定义一个数组
        .bss x,4                ;第二个数组
        .def start                ;定义一个可被别的模块找到的符号,作为程序入口
        .data                    ;开始放入数据
table    .word    1,2,3,4
        .word    5,6,7,8
        .text                    ;数据定义完毕,开始程序代码
       。。。。代码
        .end

cmd文件里边是这么放的:
    .text    :>EPROM PAGE 0
    .data    :>EPROM PAGE 0
其他东西都放在PAGE1 里边了

编译时候,出现这样的错误:
error: can't allocate .text, size 00000018 (page 0) in EPROM (avail:00000010)
就是说我分配了10个空间给text,但是text需要18个空间。

这个空间是怎么算出来的?

另外,关于算空间的。哪个高手,比如halibote,看看我这么算对不对:
堆栈使用10H个空间。
bss 使用两次,每次4个空间  一共8个
上边两个空间按照现编的CMD放置:
    .bss    :>SPRAM PAGE 1
    STACK    :>DARAM PAGE 1
也就是说,这两处使用了PAGE 1的24个空间。

data段的word使用两次,每次申请4个数据8个空间,一共使用了PAGE0 里边的16个空间

这种计算方法有问题吗?



关键词: 求助     程序     变量     间的     计算    

高工
2012-09-13 22:13:24     打赏
2楼
编译后查看map文件,发现我的计算方法是错误的。
MAP文件中关于空间使用情况的统计如下:
SECTION ALLOCATION MAP

 output                                  attributes/
section   page    origin      length       input sections
--------  ----  ----------  ----------   ----------------
.text      0    00000e00    00000018    
                  00000e00    00000018     ex43.obj (.text)

.data      0    00000e18    00000008    
                  00000e18    00000008     ex43.obj (.data)

.bss       1    00000060    00000008     UNINITIALIZED
                  00000060    00000008     ex43.obj (.bss)

STACK      1    00000080    00000010     UNINITIALIZED
                  00000080    00000010     ex43.obj (STACK)

.data中有8个word类型数据,占据8个空间
.text是汇编后的程序正文,空间不能那么简单地运算。

【新问题】.text使用的空间怎么算?

高工
2012-09-15 00:29:17     打赏
3楼
不搞dsp的路过,帮顶~!

专家
2012-09-28 16:19:20     打赏
4楼
text     程序代码所在的段!!

专家
2012-09-28 16:23:49     打赏
5楼
CMD是用来分配rom和ram用的,告诉链接程序怎样计算地址和分配空间
所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据你的
芯片进行修改.
以2407A为例,0×40-0×43是加密位,一般编写CMD时最好错开此位,以免误加密。如果使用我这里的示例代码,那就应该在代码中以.word之类预留出加密位位置!!!

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]