Tool/software: TI C/C++ Compiler
I have file hello.c
/**
* hello.c
*/
#include "defs.h"
int main(void)
{
a = 1;
b = 1;
c = 1;
foo();
return 0;
}
/**
* hello.c
*/
#include "defs.h"
int main(void)
{
a = 1;
b = 1;
c = 1;
foo();
return 0;
}
and i have 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++;
return 0;
}
and i have defs.h
/* * defs.h * */ #ifndef DEFS_H_ #define DEFS_H_ int foo(); extern int a; extern int b; extern int c; #endif /* DEFS_H_ */
the assembly code for foo.c in foo.asm looks like:
;***************************************************************
;* TMS320C2000 C/C++ Codegen PC v16.9.6.LTS *
;* Date/Time created: Fri Feb 07 10:07:33 2020 *
;***************************************************************
.compiler_opts --abi=coffabi --float_support=fpu32 --hll_source=on --mem_model:code=flat --mem_model:data=large --object_format=coff --silicon_version=28 --symdebug:none
.asg XAR2, FP
.global _b
_b: .usect "sect",1,1,0
.global _c
_c: .usect "sect",1,1,0
.global _a
_a: .usect "sect",1,1,0
; C:\ti\ccsv7\tools\compiler\ti-cgt-c2000_16.9.6.LTS\bin\ac2000.exe -@C:\\Users\\Vadim\\AppData\\Local\\Temp\\{DBEFC6D6-CDE5-4F19-886A-E7AD4BD4A397}
.sect ".text"
.clink
.global _foo
;***************************************************************
;* FNAME: _foo FR SIZE: 0 *
;* *
;* FUNCTION ENVIRONMENT *
;* *
;* FUNCTION PROPERTIES *
;* 0 Parameter, 0 Auto, 0 SOE *
;***************************************************************
_foo:
MOVW DP,#_a ; [CPU_U]
INC @_a ; [CPU_] |17|
INC @_b ; [CPU_] |18|
INC @_c ; [CPU_] |19|
MOVB AL,#0 ; [CPU_] |21|
LRETR ; [CPU_]
; return occurs ; []
and in hello.asm
;***************************************************************
;* TMS320C2000 C/C++ Codegen PC v16.9.6.LTS *
;* Date/Time created: Fri Feb 07 10:07:33 2020 *
;***************************************************************
.compiler_opts --abi=coffabi --float_support=fpu32 --hll_source=on --mem_model:code=flat --mem_model:data=large --object_format=coff --silicon_version=28 --symdebug:none
.asg XAR2, FP
; C:\ti\ccsv7\tools\compiler\ti-cgt-c2000_16.9.6.LTS\bin\ac2000.exe -@C:\\Users\\Vadim\\AppData\\Local\\Temp\\{CB2ED061-6C5B-4791-8B03-04F530BE6B67}
.sect ".text"
.clink
.global _main
;***************************************************************
;* FNAME: _main FR SIZE: 0 *
;* *
;* FUNCTION ENVIRONMENT *
;* *
;* FUNCTION PROPERTIES *
;* 0 Parameter, 0 Auto, 0 SOE *
;***************************************************************
_main:
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|
; call occurs [#_foo] ; [] |19|
MOVB AL,#0 ; [CPU_] |23|
LRETR ; [CPU_]
; return occurs ; []
;**************************************************************
;* UNDEFINED EXTERNAL REFERENCES *
;**************************************************************
.global _b
.global _c
.global _a
.global _foo
My question how i tell compiler to use data_blocking also in hello.c with external variables, so DP optimization will be executed by compiler?
I know i can make a struct but i need actual variables because i need the adress in .map file for each variable.
Thanks.