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/C++ 源語(yǔ)句插入到編譯器的匯編語(yǔ)言輸出中的功能。交叉列出功能可用于檢查為每個(gè) C 語(yǔ)句生成的匯編代碼。交叉列出的行為有所不同,具體取決于是否使用了優(yōu)化器以及指定了哪些選項(xiàng)。
調(diào)用交叉列出功能的最簡(jiǎn)單方法是使用 --c_src_interlist 選項(xiàng)。要在名為 function.c 的程序上編譯和運(yùn)行交叉列出功能,請(qǐng)輸入:
armcl --c_src_interlist function--c_src_interlist 選項(xiàng)阻止編譯器刪除交叉列出的匯編語(yǔ)言輸出文件。輸出匯編文件 function.asm 被正常匯編。
在沒有優(yōu)化器的情況下調(diào)用交叉列出功能時(shí),交叉列出將作為代碼生成器與匯編器之間的單獨(dú)通道運(yùn)行。該功能讀取匯編和 C/C++ 源文件,合并這些文件,然后將 C/C++ 語(yǔ)句作為注釋寫入?yún)R編文件中。
有關(guān)將交叉列出功能與優(yōu)化器一起使用的信息,請(qǐng)參閱節(jié) 3.11。使用 --c_src_interlist 選項(xiàng)會(huì)導(dǎo)致性能和/或代碼大小下降。
以下示例顯示了一個(gè)典型的交叉列出的匯編文件。
_main:
STMFD SP!, {LR}
;------------------------------------------------------------------------------
; 5 | printf("Hello, world\n");
;------------------------------------------------------------------------------
ADR A1, SL1
BL _printf
;------------------------------------------------------------------------------
; 6 | return 0;
;------------------------------------------------------------------------------
MOV A1, #0
LDMFD SP!, {PC}