新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > S3C825A型單片機(jī)結(jié)構(gòu)及軟件設(shè)計(jì)

S3C825A型單片機(jī)結(jié)構(gòu)及軟件設(shè)計(jì)

作者: 時(shí)間:2012-03-29 來(lái)源:網(wǎng)絡(luò) 收藏

  函數(shù)返回值可根據(jù)其類型放在R15或R15:R14寄存器對(duì)中。若返回值是struct或union類型,則返回R15中的值是存放返回結(jié)果的堆棧指針起始位置。

  C語(yǔ)言編譯器也是編譯中斷函數(shù)時(shí)會(huì)自動(dòng)保護(hù)所用到的寄存器(包括R10-R15),狀態(tài)寄存器FLAGS的保護(hù)也是在中斷處理過(guò)程中自動(dòng)完成的。中斷過(guò)程中用到的寄存器都使用PUSH Rn的指令進(jìn)行保護(hù),而采用POP Rn指令恢復(fù)。當(dāng)用IRET指令自動(dòng)恢復(fù)狀態(tài)寄存器FLAGS時(shí),可以從中斷中返回。

  3.2 對(duì)匯編語(yǔ)言函數(shù)的約定

  對(duì)于一個(gè)可以被C語(yǔ)言函數(shù)調(diào)用的匯編程序來(lái)說(shuō),使用時(shí)必須滿足以下3點(diǎn):

  1)符合C語(yǔ)言參數(shù)傳遞規(guī)則;

  2)有PUBLIC函數(shù)入口標(biāo)志;

  3)在C語(yǔ)言函數(shù)中用extern聲音為外部函數(shù)。

  參加傳遞規(guī)則和C語(yǔ)言函數(shù)一樣,所不同的是,要在匯編語(yǔ)言函數(shù)編寫過(guò)程中具體體現(xiàn)出來(lái)。

  4 應(yīng)用實(shí)例

  明確了以上調(diào)用規(guī)則,混合編程就比較容易了,歸納起來(lái)有以下幾點(diǎn):

  1)在C語(yǔ)言源文件中用“extern”關(guān)鍵字導(dǎo)入被匯編語(yǔ)言源文件導(dǎo)出的標(biāo)號(hào);

  2)在匯編語(yǔ)言源文件用“PUBLIC”關(guān)鍵字把標(biāo)號(hào)導(dǎo)出到C語(yǔ)言源文件;

  3)在匯編語(yǔ)言中用“EXTERN”關(guān)鍵字導(dǎo)入被C語(yǔ)言函數(shù)源文件導(dǎo)出的關(guān)鍵字;

  4)用C語(yǔ)言把標(biāo)號(hào)導(dǎo)出給匯編語(yǔ)言,這一步不需要關(guān)鍵字;

  5)把編輯好的C語(yǔ)言和匯編語(yǔ)言源文件導(dǎo)入設(shè)計(jì)系統(tǒng),并用各自調(diào)用函數(shù)的指令調(diào)用。

  下面以筆者在校音器設(shè)計(jì)中用到的2個(gè)例子來(lái)具體說(shuō)明。

  4.1 C語(yǔ)言和匯編語(yǔ)言相互調(diào)用

  在該例中,用C語(yǔ)言函數(shù)main()調(diào)用匯編語(yǔ)言函數(shù)get_rand()以得到一個(gè)隨機(jī)數(shù),接著,用匯編語(yǔ)言函數(shù)get_rand()調(diào)用C語(yǔ)言庫(kù)函數(shù)rand()再得到一個(gè)整型機(jī)隨機(jī)數(shù),然后用調(diào)用C語(yǔ)言函數(shù)mult()的方法把這個(gè)隨機(jī)值的高位乘以main()函數(shù)傳遞給自己的實(shí)參,同時(shí)把乘積值返回給main()參數(shù)。

  



關(guān)鍵詞: S3C825A 單片機(jī) 結(jié)構(gòu)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉