freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

張永祥tms320c54系列dsp原理與應(yīng)用第六章-資料下載頁

2025-05-15 08:11本頁面
  

【正文】 可以訪問匯編程序中定義的變量。同樣,匯編程序也可以調(diào)用 C程序或訪問 C程序中定義的變量。 ? 混合編程方法 要求 用戶必須自己維護(hù)各匯編模塊的入口和出口代碼,自己計算傳遞的參數(shù)在堆棧中的偏移量,工作量稍大,但能做到對程序的絕對控制。 首都師范大學(xué)信息工程學(xué)院 35 C語言和匯編語言混合編程 C語言和匯編語言混合編程 ? 在編寫 C 程序和匯編程序時 ,必須遵循有關(guān)的調(diào)用規(guī)則和寄存器規(guī)則。 1. 寄存器規(guī)則 ? 在 C 環(huán)境下嚴(yán)格約定了寄存器規(guī)則。它明確了編譯器如何使用寄存器以及交叉調(diào)用時如何保護(hù)寄存器。 ? 調(diào)用函數(shù)時 ,被調(diào)用函數(shù)負(fù)責(zé)保護(hù)某些寄存器 ,這些寄存器不必由調(diào)用者來保護(hù)。 ? 如果調(diào)用者需要使用沒有保護(hù)的寄存器 ,則調(diào)用者在調(diào)用函數(shù)前必須對其予以保護(hù)。 首都師范大學(xué)信息工程學(xué)院 36 C語言和匯編語言混合編程 2. 函數(shù)調(diào)用規(guī)則 ? 參數(shù)傳遞 ? 局部幀的產(chǎn)生 ? 函數(shù)返回 首都師范大學(xué)信息工程學(xué)院 37 C語言和匯編語言混合編程 二、 從 C程序中訪問匯編程序變量 ? 根據(jù)變量和常數(shù)定義的位臵和方法不同 ,可分為三種情況 : 1. 訪問在 .bss 段中定義的變量 。 ? 實現(xiàn)方法如下: (1) 采用 .bss 命令定義變量 ; (2) 用 .global 將變量說明為外部變量 ; (3) 在匯編變量名前加下劃線 “ — ”; (4) 在 C 程序中將變量說明為外部變量 , 然后就可以像訪問普通變量一樣訪問它。 首都師范大學(xué)信息工程學(xué)院 38 C語言和匯編語言混合編程 2. 訪問 在匯編程序中用塊定義的常數(shù)表(如用于 FIR、 IIR濾波器等的系數(shù)表)。 ? 訪問時首先在匯編程序中說明一個指向該表起始的全局符號,然后用 .sect定義 一個 塊。在 C程序中則定義個指向該系數(shù)表的指針。 同時在 C 程序中 用 extern 予以聲明 。 3. 訪問 .set和 .global定義的全局常量。 ? 由于 符號表包含的是常數(shù)值 , 而編譯器并不能區(qū)分哪些符號表包含的是變量的地址 ,哪些是變量的值。因此在 C 程序中訪問 時需要在 常數(shù)名前加地址操作符 amp。, 這樣才能得到常數(shù)值。 首都師范大學(xué)信息工程學(xué)院 39 C語言和匯編語言混合編程 三 、 在 C程序中直接嵌入?yún)R編語句 ? 需注意的是不能破壞 C語言的運(yùn)行環(huán)境。 ? 格式如下: asm (“ 匯編語句 ”) ; ? 例如 : asm(“ ssbx intm ”); /*打開數(shù)據(jù)口 */ asm(“ rsbx xf ”); ? 注意 : 括號中的匯編語句必須以標(biāo)號、空格、 tab 、分號開頭 ; 不要破壞 C 環(huán)境 ,因為 C 編譯器并不檢查和分析嵌入的匯編語句 ; 插入跳轉(zhuǎn)語句和標(biāo)號會產(chǎn)生不可預(yù)測的結(jié)果 ; 匯編語句不要改變 C 程序中變量的值 ; 不要用匯編語句中加入?yún)R編器選項而改變匯編環(huán)境。 首都師范大學(xué)信息工程學(xué)院 40 C語言和匯編語言混合編程 ? 舉例, 定時器 0中斷 服務(wù)程序 1. 對中斷進(jìn)行初始化,在 C語言程序中對中斷進(jìn)行初始化的程序片段如下: asm(“ ssbx intm “) 。 /*開放所有可屏蔽中斷,此處就可以利用直接嵌入的方式*/ IMR=0x0008。 /* 開放定時器 0中斷 */ IFR=0xffff。 /* 清除所有尚未處理完的中斷 */ 2. 編寫中斷服務(wù)程序。兩種方式可以用來定義中斷函數(shù) 。 首都師范大學(xué)信息工程學(xué)院 41 C語言和匯編語言混合編程 ? Interrupt void userfunction(void) {??..} 這種方式下 C編譯器自動保護(hù)各寄存器的值,中斷響應(yīng)后自動恢復(fù)。 userfunction定時器 0的中斷服務(wù)函數(shù)名,可由用戶任意更改,但要與第三步中名字相對應(yīng)。 ? void c_intxx(void) 其中, xx代表 00~ 99之間的兩位數(shù),如 c_int01就是一個有效的中斷函數(shù)名。 首都師范大學(xué)信息工程學(xué)院 42 C語言和匯編語言混合編程 3. 建立中斷矢量表。 為了能夠讓相應(yīng)的中斷信號調(diào)用不同的中斷函數(shù),還需要在中斷向量文件 ()中定義中斷向量表。如下例所示: .ref _c_int00 .ref _ userfunction .sect vectors RS: BD _c_int00 NOP NOP ... TINT0: BD _ userfunction 。 定時器 0中斷 NOP NOP . end 首都師范大學(xué)信息工程學(xué)院 43
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1