C程序的代码和数据如何定位(转载)
1,系统定义: .cinit 存放C程序中的变量初值和常量; .const 存放C程序中的字符常量、浮点常量和用const声明的常量; .switch 存放C程序中switch语句的跳针表; .text 存放C程序的代码; .bss 为C程序中的全局和静态变量保留存储空间; .far 为C程序中用far声明的全局和静态变量保留空间; .stack 为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果; .sysmem 用于C程序中malloc、calloc和realloc函数动态分配存储空间。 2,用户定义: #pragma CODE_SECTION (symbol, "section name"); #pragma DATA_SECTION (symbol, "section name")
单个地址的时候可以使用 #define 如 #define my_data *(volatile unsigned int*)0x000C
在数组变量时 使用#pragma 宏 如 XXX.h/XXX.c #pragma DATA_SECTION(my_data,".data_section") unsigned char my_data[1024]; 在xxx.cmd中建立.data_section并赋予地址就可以
|