1. 程式人生 > >DSP程式設計技巧---C/C++與組合語言的互動之-使用編譯器的行內函數

DSP程式設計技巧---C/C++與組合語言的互動之-使用編譯器的行內函數

C/C++組合語言混合程式設計的情況下,一般我們都會選擇C/C++來實現所期待的功能。在我們用C/C++來實現某些位操作、數學運算等功能後,編譯器會盡可能地把它們編譯為一些已經高度優化的彙編函式(行內函數),一般情況下是一條或者多條彙編指令的集合,在封裝之後,我們可以在C/C++程式設計的時候直接使用這樣的行內函數。如果不直接使用它們,那麼在單步除錯的時候,也可以從C/C++程式碼編譯生成的彙編程式碼中找到對應的行內函數,能夠幫助我們加深對編譯和程式碼執行的理解。這些編譯器的行內函數都有一個顯著的外觀,即以兩個下劃線作為開頭,而使用方法則與C/C++程式設計中函式的呼叫形式是一樣的。例如:

  long lvar;

  int ivar;

  unsigned int uivar;

  lvar = __mpyxu(ivar, uivar);

  下面我們就列舉一下TMS320C28x C/C++ 編譯器的行內函數。為了方便對比說明,表格並不是完全安裝函式名的字母順序來排列的。

  表1 TMS320C28x C/C++ 編譯器的行內函數列表






表2 TMS320C28x C/C++ 編譯器的行內函數列表-面向FPU