ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
編譯器使用直接初始化來初始化全局變量。例如,考慮以下 C 代碼:
int i = 23;
int a[5] = { 1, 2, 3, 4, 5 };編譯器將變量“i”和“a[]”分配給 .data 段,并直接放置初始值。
.global i
.data
.align 4
i:
.field 23,32 ; i @ 0
.global a
.data
.align 4
a:
.field 1,32 ; a[0] @ 0
.field 2,32 ; a[1] @ 32
.field 3,32 ; a[2] @ 64
.field 4,32 ; a[3] @ 96
.field 5,32 ; a[4] @ 128定義靜態(tài)或全局變量的每個(gè)編譯模塊都包含這些 .data 段。鏈接器將 .data 段視為任何其他初始化段,并創(chuàng)建輸出段。在加載時(shí)初始化模型中,段被加載到存儲器中并由程序使用。請參閱節(jié) 6.10.3.5。
在運(yùn)行時(shí)初始化模型中,鏈接器使用這些段中的數(shù)據(jù)創(chuàng)建初始化數(shù)據(jù)和附加的壓縮初始化表。啟動例程會處理初始化表,將數(shù)據(jù)從加載地址復(fù)制到運(yùn)行地址。請參閱節(jié) 6.10.3.3。