请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320C28346 工具/软件:TI C/C++编译器
我有文件 hello.c
/** * hello.c */ #include "defs.h" int main (void) { A = 1; b = 1; C = 1; foo(); 返回0; }
/** * hello.c */ #include "defs.h" int main (void) { A = 1; b = 1; C = 1; foo(); 返回0; }
我有 foo.c
/* * foo.c * / #include "defs.h" #pragma SET_DATA_SECTION ("sect") int a; int b; int c; #pragma SET_DATA_SECTION () int foo () { A++; B++; C++; 返回0; }
我有 defs.h
//* defs.h * // #ifndef Defs_H_ #define Defs_H_ int foo (); extern int a; extern int b; extern int c; #endif //
foo.asm 中 foo.c 的汇编代码如下所示:
;********* ;* TMS320C2000 C/C++代码生成 PC v16.9.6.LTS * ;*创建日期/时间:2020年2月7日星期五10:07:33 * ;********* compiler_opts --abi=coffabi --float_support=fpu32 --hl_source=on --mem_model:code=flat --mem_model:data=large --object_format=coff --silicon_version=28 --silic_debug:none .svectXAR2、fp .ti_appb_b_b _b.usbt @;"1000 b.csd1、1、d1、d1、tb:" ac2000.exe ;* FNAME:_foo FR 大小:0 * ;* * ;*函数环境 * ;* * ;*函数属性 * ;* 0参数、0 AUTO、0 SOE * ;********* _foo: MOVW DP、#_A ;[cpu_u] 公司 @_A ;[CPU_]|17| 公司 @ b ;[CPU_]|18| 公司 @μ_c ;[CPU_]|19| MOVB AL、#0 ;[CPU_]|21| LRETR ;[cpu_] ;返回发生;[]
和 hello.asm 中
;********* ;* TMS320C2000 C/C++代码生成 PC v16.9.6.LTS * ;*创建日期/时间:2020年2月7日星期五10:07:33 * ;********* compiler_opts --abi=coffabi --float_support=fpu32 --hl_source=on --mem_model:code=flat --mem_model:data=large --object_format=coff --silicon_version=28 --symTemp debug:none .ev.evmXAR2、fp ;C:\bti_model\cme.tidc2000-reb6b6b.textb.cc6bdle\@ac2000.exe ;* FNAME:_MAIN FR 大小:0 * ;* * ;*函数环境 * ;* * ;*函数属性 * ;* 0参数、0 AUTO、0 SOE * ;********* 主函数(_M): MOVW DP、#_A ;[cpu_u] MOVB @_A、#1、UNC ;[CPU_]|15| MOVW dp、#_b ;[cpu_u] MOVB μ@ b、#1、UNC ;[CPU_]|16| MOVW DP、#_c ;[cpu_u] MOVB @μ_c、#1、UNC ;[CPU_]|17| LCR #_foo ;[CPU_]|19| ;调用发生[#_foo];[]|19| MOVB AL、#0 ;[CPU_]|23| LRETR ;[cpu_] ;发生返回;[];********* ;*未定义的外部引用 * ;******** 全局_b .global_c .global_a .global_foo
我的问题是如何让编译器在 hello.c 中同时使用 DATA_Blocking 和外部变量、以便编译器执行 DP 优化?
我知道我可以创建一个结构、但我需要实际变量、因为我需要.map 文件中每个变量的地址。
谢谢。