TI中文支持网
TI专业的中文技术问题搜集分享网站

编译器编译顺序问题

大家好:

我有个编译器的问题,

我按顺序定义了如下常量:
const int constint0 = 0;
const int constint1 = 0;
const int constint2 = 0;
const int constint3 = 0;
const int constint4 = 0;
const int constint5 = 0;
const int constint6 = 0;
const int constint7 = 0;
const int constint8 = 0;
const int constint9 = 0;
const int constint10 = 0;
const int constint11 = 0;
const int constint12 = 0;
const int constint13 = 0;
const int constint14 = 0;
但是在map表中分配的地址不是按顺序分配的:
0000b000 2c0 (0000b000) _constint7
0000b001 2c0 (0000b000) _constint8
0000b002 2c0 (0000b000) _constint6
0000b003 2c0 (0000b000) _constint4
0000b004 2c0 (0000b000) _constint5
0000b005 2c0 (0000b000) _constint3
0000b006 2c0 (0000b000) _constint13
0000b007 2c0 (0000b000) _constint14
0000b008 2c0 (0000b000) _constint12
0000b009 2c0 (0000b000) _constint10
0000b00a 2c0 (0000b000) _constint11
0000b00b 2c0 (0000b000) _constint2
0000b00c 2c0 (0000b000) _constint9
0000b00d 2c0 (0000b000) _constint1
0000b00e 2c0 (0000b000) _constint0

我希望按顺序定义的变量按顺序分配地址,有办法吗?

Seven Han:请参考帖子:e2echina.ti.com/…/381578

大家好:

我有个编译器的问题,

我按顺序定义了如下常量:
const int constint0 = 0;
const int constint1 = 0;
const int constint2 = 0;
const int constint3 = 0;
const int constint4 = 0;
const int constint5 = 0;
const int constint6 = 0;
const int constint7 = 0;
const int constint8 = 0;
const int constint9 = 0;
const int constint10 = 0;
const int constint11 = 0;
const int constint12 = 0;
const int constint13 = 0;
const int constint14 = 0;
但是在map表中分配的地址不是按顺序分配的:
0000b000 2c0 (0000b000) _constint7
0000b001 2c0 (0000b000) _constint8
0000b002 2c0 (0000b000) _constint6
0000b003 2c0 (0000b000) _constint4
0000b004 2c0 (0000b000) _constint5
0000b005 2c0 (0000b000) _constint3
0000b006 2c0 (0000b000) _constint13
0000b007 2c0 (0000b000) _constint14
0000b008 2c0 (0000b000) _constint12
0000b009 2c0 (0000b000) _constint10
0000b00a 2c0 (0000b000) _constint11
0000b00b 2c0 (0000b000) _constint2
0000b00c 2c0 (0000b000) _constint9
0000b00d 2c0 (0000b000) _constint1
0000b00e 2c0 (0000b000) _constint0

我希望按顺序定义的变量按顺序分配地址,有办法吗?

sixuan ji:

回复 Seven Han:

HI Seven Han:
参考的帖子使用结构体的方法解决内存分配顺序问题,我的程序是从arm平台移植过来的,在arm平台编译时顺序是跟定义顺序一致,所以我想移植到TI平台也想要这样的编译效果,是否有方法解决,#pragma的说明文档我也看过,似乎没有可以解决的方法。再次请教,谢谢。

大家好:

我有个编译器的问题,

我按顺序定义了如下常量:
const int constint0 = 0;
const int constint1 = 0;
const int constint2 = 0;
const int constint3 = 0;
const int constint4 = 0;
const int constint5 = 0;
const int constint6 = 0;
const int constint7 = 0;
const int constint8 = 0;
const int constint9 = 0;
const int constint10 = 0;
const int constint11 = 0;
const int constint12 = 0;
const int constint13 = 0;
const int constint14 = 0;
但是在map表中分配的地址不是按顺序分配的:
0000b000 2c0 (0000b000) _constint7
0000b001 2c0 (0000b000) _constint8
0000b002 2c0 (0000b000) _constint6
0000b003 2c0 (0000b000) _constint4
0000b004 2c0 (0000b000) _constint5
0000b005 2c0 (0000b000) _constint3
0000b006 2c0 (0000b000) _constint13
0000b007 2c0 (0000b000) _constint14
0000b008 2c0 (0000b000) _constint12
0000b009 2c0 (0000b000) _constint10
0000b00a 2c0 (0000b000) _constint11
0000b00b 2c0 (0000b000) _constint2
0000b00c 2c0 (0000b000) _constint9
0000b00d 2c0 (0000b000) _constint1
0000b00e 2c0 (0000b000) _constint0

我希望按顺序定义的变量按顺序分配地址,有办法吗?

Loops:

回复 sixuan ji:

这是编译器行为。是由什么特殊需要一定要线形吗?

大家好:

我有个编译器的问题,

我按顺序定义了如下常量:
const int constint0 = 0;
const int constint1 = 0;
const int constint2 = 0;
const int constint3 = 0;
const int constint4 = 0;
const int constint5 = 0;
const int constint6 = 0;
const int constint7 = 0;
const int constint8 = 0;
const int constint9 = 0;
const int constint10 = 0;
const int constint11 = 0;
const int constint12 = 0;
const int constint13 = 0;
const int constint14 = 0;
但是在map表中分配的地址不是按顺序分配的:
0000b000 2c0 (0000b000) _constint7
0000b001 2c0 (0000b000) _constint8
0000b002 2c0 (0000b000) _constint6
0000b003 2c0 (0000b000) _constint4
0000b004 2c0 (0000b000) _constint5
0000b005 2c0 (0000b000) _constint3
0000b006 2c0 (0000b000) _constint13
0000b007 2c0 (0000b000) _constint14
0000b008 2c0 (0000b000) _constint12
0000b009 2c0 (0000b000) _constint10
0000b00a 2c0 (0000b000) _constint11
0000b00b 2c0 (0000b000) _constint2
0000b00c 2c0 (0000b000) _constint9
0000b00d 2c0 (0000b000) _constint1
0000b00e 2c0 (0000b000) _constint0

我希望按顺序定义的变量按顺序分配地址,有办法吗?

sixuan ji:

回复 Loops:

程序是从ARM平台移植的,在ARM平台不存在这个问题,要连续的目的是为了使用指针间接访问,由于参数变量相关的程序是通过软件自动生成,不能改变为结构体,我也看了《TMS320C28x Optimizing C_C++ Compiler》这个文档,没有找到我想要的方法。还有中方法是在CMD文件中一个一个参数地址,这样是比较麻烦的,以后参数发生变化,还要修改CMD文件。是否还有其它更好的方法解决呢?谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » 编译器编译顺序问题
分享到: 更多 (0)