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
只要遵循 節(jié) 6.4 中定義的調(diào)用慣例,以及 節(jié) 6.3 中定義的寄存器慣例,即可同時使用 C/C++ 與匯編語言函數(shù)。C/C++ 代碼可訪問變量并調(diào)用使用匯編語言定義的函數(shù),匯編代碼也可訪問 C/C++ 變量并調(diào)用 C/C++ 函數(shù)。
結(jié)合使用匯編語言和 C 時,請遵循以下指南:
如果通常使用 SP,則無需顯式保留。換而言之,匯編函數(shù)可自由使用棧,只要在函數(shù)返回前將壓入棧的全部內(nèi)容彈出即可(因此要保留 SP)。
非專用寄存器可自由使用,無需首先保存。
請記住,函數(shù)可改變未保留的任何寄存器,而且不必恢復(fù)該寄存器。如果這些寄存器中有任何內(nèi)容需要在不同調(diào)用間保留,則必須顯式保存它們。
同理,若要從匯編語言中訪問 C/C++ 函數(shù)或?qū)ο?,?yīng)在匯編語言模塊中使用 .ref 或 .global 指令來聲明 C/C++ 對象。這樣可創(chuàng)建未聲明的外部引用,并由鏈接器解析。