問:我該怎么寫一個將被C調用的匯編函數(shù)?
答:一個最簡單的學習怎么寫匯編的方式是,先用C寫這個代碼的簡單版本,然后用編譯器將它編譯成為匯編代碼。然后你就可以用這個輸出的匯編代碼作為你自己匯編函數(shù)的模板。例如:
你說你想寫一個帶有“l(fā)ong”類型參數(shù)的匯編子程序,那么首先用C寫一個函數(shù):
void MyAsmFunc(unsigned long parameter)
{
}
好了,現(xiàn)在編譯它產生匯編代碼。PICC編譯器的-S選項可以。
picc -16f877 -S file.c
這個命令將產生"file.as",打開它,它看起來像下面這樣:
; param _parameter assigned to ?_MyAsmFunc+0
_MyAsmFunc$parameter set ?_MyAsmFunc+0
psect text1,local,class=CODE,delta=2
global _MyAsmFunc
signat _MyAsmFunc,4216
psect text1
_MyAsmFunc
bcf 3,6
bcf 3,5
return
因為PICC編譯器會讓函數(shù)的bank回零。所以我們在這里看到它在return之前把bank回到bank0。從這個匯編代碼開始,你可以擴充你的匯編代碼。函數(shù)的參數(shù)可以使用_MyAsmFunc$paramter符號來訪問。這個符號訪問的是第一個字節(jié),其余的字節(jié)就在符號上加偏移量,例如:
_MyAsmFunc$parameter+2
這將引用第三個字節(jié)。
-
函數(shù)
+關注
關注
3文章
4340瀏覽量
62791 -
編譯器
+關注
關注
1文章
1637瀏覽量
49188
發(fā)布評論請先 登錄
相關推薦
評論