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
通過使用 MUST_ITERATE pragma,可以保證循環(huán)執(zhí)行一定的次數(shù)。下述示例會(huì)告知編譯器,循環(huán)保證可以正好運(yùn)行 10 次:
#pragma MUST_ITERATE(10,10)
for(i = 0; i < trip_count; i++) { ...在此示例中,即使沒有 pragma,編譯器也嘗試生成循環(huán)。但如果沒有為這樣的循環(huán)指定 MUST_ITERATE,編譯器會(huì)生成代碼繞過循環(huán),以解決可能出現(xiàn)的 0 次迭代。利用 pragma 規(guī)范,編譯器知道循環(huán)至少會(huì)迭代一次,可以消除循環(huán)繞過代碼。
MUST_ITERATE 可用于指定循環(huán)計(jì)數(shù)的范圍以及循環(huán)計(jì)數(shù)的系數(shù)。下述示例會(huì)告知編譯器,循環(huán)執(zhí)行 8 次到 48 次之間,trip_count 變量是 8 的倍數(shù)(8、16、24、32、40、48)。倍數(shù)參數(shù)支持編譯器展開循環(huán)。
#pragma MUST_ITERATE(8, 48, 8)
for(i = 0; i < trip_count; i++) { ...對(duì)于具有復(fù)雜邊界的循環(huán),應(yīng)考慮使用 MUST_ITERATE。在下述示例中,編譯器不得不生成一個(gè)除法函數(shù)調(diào)用,以便在運(yùn)行時(shí)確定所執(zhí)行的迭代次數(shù)。
for(i2 = ipos[2]; i2 < 40; i2 += 5) { ...編譯器不會(huì)執(zhí)行上述操作。在這種情況下,使用 MUST_ITERATE 指定循環(huán)始終執(zhí)行八次,編譯器將嘗試生成循環(huán):
#pragma MUST_ITERATE(8, 8)
for(i2 = ipos[2]; i2 < 40; i2 += 5) { ...