| C6000系列DSPC62和67系列有A0~A15,B0~B15共32個寄存器,對于C64XX,有A0~A31,B0~B31共64個寄存器 1、C62XX可用于條件寄存器有A1、A2、B0、B1、B2,對于C64XX來說,還可以使用A0; 2、C6000的C編譯器規(guī)定函數(shù)調(diào)用的前10個入口參數(shù)使用寄存器A4、B4、A6、B6、A8、B8、A10、B10、A12、B12,調(diào)用者必須保存A0~A9和B0~B9寄存器(C64平臺還要保存A16~A31,B16~B31寄存器),被調(diào)用者使用堆棧存放臨時變量,被調(diào)用函數(shù)中如果使用了A10~A15,B10~B15寄存器,則需要進行保護,被調(diào)用者使用A4寄存器保存函數(shù)返回值。 實際上這一切是通過.cproc和.endproc自動完成,匯編優(yōu)化器會在.cproc和.endproc語句處生成滿足C調(diào)用約定的入口代碼和出口代碼。匯編優(yōu)化器會自動保存使用過的寄存器,并在.return語句處正確地將返回值放到寄存器A4中。 |