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++ 編譯器對(duì)函數(shù)調(diào)用強(qiáng)加了一套嚴(yán)格的規(guī)則。除了特殊的運(yùn)行時(shí)支持函數(shù),任何調(diào)用或被 C/C++ 函數(shù)調(diào)用的函數(shù)都必須遵循這些規(guī)則。不遵循這些規(guī)則會(huì)破壞 C/C++ 環(huán)境并導(dǎo)致程序失敗。
以下各節(jié)使用此術(shù)語(yǔ)來(lái)描述 C/C++ 編譯器的函數(shù)調(diào)用慣例:
有關(guān) EABI 模式下或使用 VFP 協(xié)處理器時(shí)的調(diào)用慣例的詳細(xì)信息,請(qǐng)參閱位于 ARM 信息中心的 EABI 文檔。
圖 6-5 演示了典型的函數(shù)調(diào)用。在此示例中,參數(shù)被傳遞給函數(shù),該函數(shù)使用局部變量并調(diào)用另一個(gè)函數(shù)。前四個(gè)參數(shù)會(huì)傳遞給寄存器 R0-R3。此示例還顯示了為被調(diào)用函數(shù)分配本地幀和參數(shù)塊。沒(méi)有局部變量且不需要參數(shù)塊的函數(shù)不分配本地幀。
圖 6-5 在函數(shù)調(diào)用期間使用堆棧