如何在编程时读取IAR编译器的segments空间分配
我想在程序里头直接显示CODE_I、CODE_ID、DATA_I、DATA_C等编译器自带的变量值,怎么才可以做到?
请大侠指点!
#define MAIN_CSTACK_BEGIN ((size_t)_Pragma("segment=\"CSTACK\"") __segment_begin("CSTACK"))
#define MAIN_RSTACK_BEGIN ((size_t)_Pragma("segment=\"RSTACK\"") __segment_begin("RSTACK"))
#define MAIN_CSTACK_END ((size_t)_Pragma("segment=\"CSTACK\"") __segment_end("CSTACK"))
#define MAIN_RSTACK_END ((size_t)_Pragma("segment=\"RSTACK\"") __segment_end("RSTACK"))
程序中直接:
unsignedi nt x=MAIN_CSTACK_BEGIN;
正在调试中……
先问一句大侠是从哪里学到的,也好授之以渔
我整理了一下:
#pragma segment="CODE"
unsigned int *x = __segment_begin("CODE");
但是编译的时候报错
Error[Pe028]: expression must have a constant value
是unsigned int *x = __segment_begin("CODE");的错误
另外我想把__segment_begin("CODE")的值编译完就固化在代码的某个位置例如ORG 0x1000
是否可以做到?
__segment_begin只是一个库函数,所以__segment_begin("CODE")的值必定是已经存在于CODE区里头,只是函数调用的时候去取出来。
但是下面这个问题编译不过去呀:(
#pragma segment="CODE"
unsigned int *x = __segment_begin("CODE");
但是编译的时候报错
Error[Pe028]: expression must have a constant value