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

正文內(nèi)容

[工學(xué)]第4章 c55x處理器的軟件設(shè)計(jì)-文庫吧

2025-09-17 18:46 本頁面


【正文】 *AR3,AR1 。 將 i的內(nèi)容存放到 AR1中 MOV AR1,*abs16(_j) 。 將 i的內(nèi)容保存到 j return 給出在本地變量中使用 ioport類型的例子: int * iop rt ioport_pointer。 /* ioport 指針 */ int i。 int j。 void foo (void) { ioport_pointer = amp。i。 j = *ioport_pointer。 } 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 17 第 4章 C55x處理器的軟件設(shè)計(jì) 下來給出一個(gè)指向 I/O空間數(shù)據(jù)指針的例子: /* 指向 ioport數(shù)據(jù) : */ ioport int * ptr_to_ioport。 ioport int i。 void foo (void) { int j。 i = 10。 ptr_to_ioport = amp。i。 j = *ptr_to_ioport。 } 上面代碼編譯結(jié)果如下: _foo: MOV _i,*abs16(_ptr_ o_ioport) 。 存儲(chǔ) _i的地址 MOV *abs16(_ptr_to_ioport),AR3 AADD –1, SP MOV 10,port(_i) 。 向 _i中存入 10 MOV *AR3,AR1 MOV AR1,*SP(0) AADD 1,SP return 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 18 第 4章 C55x處理器的軟件設(shè)計(jì) 上面代碼編譯結(jié)果如下: _foo: MOV 10,port(_i) 。 將 10存在 _i中 MOV _i,port(_iop_ptr_to_ioport) 。 存儲(chǔ) _i的地址 MOV port(_iop_ptr_to_ioport),AR3 。 載入 _i的地址 MOV *AR3, AR1 。 載入 _i MOV AR1,port(_j) 。 將 10存到 _j中 return 下面的例子是利用 ioport指針指向 I/O空間的數(shù)據(jù): /* 指向 ioport數(shù)據(jù)的 ioport指針 : */ ioport int * ioport iop_ptr_to_ioport。 ioport int i。 ioport int j。 void foo (void) {i = 10。 iop_ptr_to_ioport = amp。i。 j = *iop_ptr_to_ioport。 } 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 19 第 4章 C55x處理器的軟件設(shè)計(jì) interrupt關(guān)鍵字 中斷操作需要使用特定的寄存器保存規(guī)則,并具有特殊的返回順序。 C55x編譯器使用了關(guān)鍵字 “ interrupt‖定義中斷函數(shù)。 當(dāng) C/C++代碼被中斷時(shí),中斷程序必須保存所有與程序有關(guān)的寄存器。 當(dāng)使用 “ interrupt‖關(guān)鍵字定義函數(shù)時(shí),中斷函數(shù)必須返回空并且沒有參數(shù)傳遞。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 20 第 4章 C55x處理器的軟件設(shè)計(jì) interrupt關(guān)鍵字 中斷函數(shù)可以定義本地變量并且使用堆棧。接下來給出定義中斷函數(shù)的例子: interrupt void int_handler() { unsigned int flags。 ... } c_int00是 C/C++程序的入口點(diǎn),這個(gè)函數(shù)名被系統(tǒng)復(fù)位中斷保留,該中斷服務(wù)程序用來初始化系統(tǒng)并調(diào)用 main函數(shù)。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 21 第 4章 C55x處理器的軟件設(shè)計(jì) onchip關(guān)鍵字的作用是告訴編譯器由該關(guān)鍵字定義的指針?biāo)赶虻臄?shù)據(jù)可以作為一個(gè)雙乘法指令中的操作數(shù)。 如果 onchip關(guān)鍵字向函數(shù)傳遞數(shù)據(jù),或者最終所引用的數(shù)據(jù)是用 onchip定義的,則該數(shù)據(jù)必須在片上內(nèi)存。 如果該數(shù)據(jù)在片外,則當(dāng)通過 BB數(shù)據(jù)總線訪問該數(shù)據(jù)時(shí)將產(chǎn)生一個(gè)總線錯(cuò)誤。 下面給出用 onchip定義數(shù)組和指針的例子。 onchip int x[100]。 /* array declaration */ onchip int *p。 /* pointer declaration */ onchip關(guān)鍵字 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 22 第 4章 C55x處理器的軟件設(shè)計(jì) C語言的優(yōu)化 如果將未經(jīng)優(yōu)化的 C語言程序直接運(yùn)行會(huì)發(fā)現(xiàn)運(yùn)行效率較低,并且產(chǎn)生的代碼較大,而通過優(yōu)化可以較好地解決這些問題。 優(yōu)化的作用是對(duì)循環(huán)進(jìn)行化簡,重新組織表達(dá)式和聲明,將變量直接分配到寄存器中。 通過優(yōu)化可以提高程序運(yùn)行效率,縮小程序編碼數(shù)量。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 23 第 4章 C55x處理器的軟件設(shè)計(jì) C語言的優(yōu)化 C/C++編譯器提供了不同的優(yōu)化選擇,通過修改cl55命令行中的 on選擇就可以方便地選擇不同的優(yōu)化等級(jí), n代表優(yōu)化等級(jí),包括 0、 2和 3。下面給出不同優(yōu)化等級(jí)的功能。 ( 1) ? O0 ? 簡化控制流圖 ? 把變量分配到寄存器 ? 分析循環(huán)的各種情況,只保留一個(gè)退出循環(huán)的分支 ?刪除未用的代碼 ?簡化表達(dá)式和聲明 ?把用 inline聲明的函數(shù)變?yōu)檎{(diào)用關(guān)系 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 24 第 4章 C55x處理器的軟件設(shè)計(jì) C語言的優(yōu)化 ( 2) ? O1 除了 O0的各種優(yōu)化功能外,還有如下功能: ?在分配變量時(shí),將數(shù)值直接賦給變量而不是給出變量的索引值 ?去掉沒有用的分配變量和表達(dá)式 ?去掉本地通用表達(dá)式 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 25 第 4章 C55x處理器的軟件設(shè)計(jì) ( 3) ? O2 除了 O1的各種優(yōu)化功能外,還有如下功能: ?完成循環(huán)優(yōu)化 ?去掉全局通用的子表達(dá)式 ?去掉全局沒有用的分配變量和表達(dá)式 ?完成循環(huán)的化解 ?當(dāng)只用 o選項(xiàng)時(shí)優(yōu)化器自動(dòng)進(jìn)行 O2優(yōu)化 C語言的優(yōu)化 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 26 第 4章 C55x處理器的軟件設(shè)計(jì) ( 4) ?O3 除了 O2的各種優(yōu)化功能外,還有如下功能: ?去掉未調(diào)用的函數(shù) ?簡化返回值未使用的函數(shù) ?將小函數(shù)進(jìn)行內(nèi)嵌調(diào)用 ?對(duì)被調(diào)用的函數(shù)聲明進(jìn)行重新排序,以便被優(yōu)化的調(diào)用方能夠找到該函數(shù) ?完成文件級(jí)優(yōu)化 C語言的優(yōu)化 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 27 第 4章 C55x處理器的軟件設(shè)計(jì) C語言的優(yōu)化 優(yōu)化器分析數(shù)據(jù)流時(shí)將盡量減少對(duì)內(nèi)存的訪問,如果這個(gè)數(shù)據(jù)必須從內(nèi)存中得到,則該數(shù)據(jù)必須用volatile關(guān)鍵字定義,這樣可以使編譯器不對(duì)該變量進(jìn)行優(yōu)化。 例如聲明一個(gè)指針 unsigned int *ctrl。 當(dāng)在循環(huán)中有如下語句時(shí) while (*ctrl != 0xFF)。 優(yōu)化器將只在進(jìn)入循環(huán)的初始化中進(jìn)行一次內(nèi)存讀,而在循環(huán)當(dāng)中不在更新該變量的內(nèi)容,如果該變量被中斷或其他程序改變,由于循環(huán)中的 ctrl的值沒有更新,將會(huì)使程序不能按照正確的方式執(zhí)行,這里應(yīng)當(dāng)用如下方法聲明 ctrl: volatile unsigned int *ctrl。 特別當(dāng)該變量在中斷函數(shù)中被賦值,而該變量在主函數(shù)的循環(huán)中被用到時(shí),必須用 volatile聲明該變量。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 28 第 4章 C55x處理器的軟件設(shè)計(jì) 在 C語言中直接嵌套匯編語句 C55x的 C/C++編譯器允許使用者在 C語言代碼中直接嵌套匯編語句,嵌套匯編語句的語法十分簡單,只需在嵌入的匯編語句前面加上 asm標(biāo)示符,左右加上一個(gè)雙引號(hào)和一個(gè)小括號(hào)即可。 asm (匯編語句 ) C語言與匯編語言的混合編程 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 29 第 4章 C55x處理器的軟件設(shè)計(jì) 在 C語言中直接嵌套匯編語句 采用直接嵌套匯編語句的方法比較適合完成對(duì)硬件進(jìn)行操作、設(shè)置狀態(tài)寄存器、開關(guān)中斷等工作,這樣做往往要比用 C語言實(shí)現(xiàn)效率更高。 用 C語言打開中斷的代碼: IRQ_globalEnable()。 //全局開中斷 下面給出該代碼編譯后的結(jié)果: 0115A6 IRQ_globalEnable: 0115A6 3C3B MOV 3,AR3 0115A8 DF6105 MOV uns(*AR3),AC0 0115AB 76080040 BFXTR 2048,AC0,T0 0115AF 20 NOP 0115B0 46B2 BCLR ST1_INTM 0115B2 4804 RET 可以看到采用 C語言打開全局中斷共用了 6條語句,考慮到調(diào)用子函數(shù)的開銷,完成該功能一共要花費(fèi) 10個(gè)左右的指令周期,而采用嵌套匯編語句的方法則只用一條指
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1