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

正文內(nèi)容

[工學(xué)]第4章 c55x處理器的軟件設(shè)計(jì)-預(yù)覽頁(yè)

 

【正文】 S320C55x DSP原理及應(yīng)用 24 第 4章 C55x處理器的軟件設(shè)計(jì) C語(yǔ)言的優(yōu)化 ( 2) ? O1 除了 O0的各種優(yōu)化功能外,還有如下功能: ?在分配變量時(shí),將數(shù)值直接賦給變量而不是給出變量的索引值 ?去掉沒(méi)有用的分配變量和表達(dá)式 ?去掉本地通用表達(dá)式 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 25 第 4章 C55x處理器的軟件設(shè)計(jì) ( 3) ? O2 除了 O1的各種優(yōu)化功能外,還有如下功能: ?完成循環(huán)優(yōu)化 ?去掉全局通用的子表達(dá)式 ?去掉全局沒(méi)有用的分配變量和表達(dá)式 ?完成循環(huán)的化解 ?當(dāng)只用 o選項(xiàng)時(shí)優(yōu)化器自動(dòng)進(jìn)行 O2優(yōu)化 C語(yǔ)言的優(yōu)化 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 26 第 4章 C55x處理器的軟件設(shè)計(jì) ( 4) ?O3 除了 O2的各種優(yōu)化功能外,還有如下功能: ?去掉未調(diào)用的函數(shù) ?簡(jiǎn)化返回值未使用的函數(shù) ?將小函數(shù)進(jìn)行內(nèi)嵌調(diào)用 ?對(duì)被調(diào)用的函數(shù)聲明進(jìn)行重新排序,以便被優(yōu)化的調(diào)用方能夠找到該函數(shù) ?完成文件級(jí)優(yōu)化 C語(yǔ)言的優(yōu)化 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 27 第 4章 C55x處理器的軟件設(shè)計(jì) C語(yǔ)言的優(yōu)化 優(yōu)化器分析數(shù)據(jù)流時(shí)將盡量減少對(duì)內(nèi)存的訪問(wèn),如果這個(gè)數(shù)據(jù)必須從內(nèi)存中得到,則該數(shù)據(jù)必須用volatile關(guān)鍵字定義,這樣可以使編譯器不對(duì)該變量進(jìn)行優(yōu)化。 特別當(dāng)該變量在中斷函數(shù)中被賦值,而該變量在主函數(shù)的循環(huán)中被用到時(shí),必須用 volatile聲明該變量。 //全局開(kāi)中斷 下面給出該代碼編譯后的結(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語(yǔ)言打開(kāi)全局中斷共用了 6條語(yǔ)句,考慮到調(diào)用子函數(shù)的開(kāi)銷,完成該功能一共要花費(fèi) 10個(gè)左右的指令周期,而采用嵌套匯編語(yǔ)句的方法則只用一條指令即可: asm (BCLR ST1_INTM) 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 30 第 4章 C55x處理器的軟件設(shè)計(jì) 在 C語(yǔ)言中直接嵌套匯編語(yǔ)句 采用直接嵌套的方法要十分小心,這是因?yàn)?C語(yǔ)言編譯器并不檢查和分析所嵌入的匯編語(yǔ)句,而嵌入的語(yǔ)句很可能改變 C語(yǔ)言的運(yùn)行環(huán)境。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 31 第 4章 C55x處理器的軟件設(shè)計(jì) 要很好地使用 C語(yǔ)言與匯編的混合編程技術(shù),必須對(duì) C語(yǔ)言調(diào)用子函數(shù)的規(guī)則詳細(xì)掌握,這些規(guī)則包括 C/C++中寄存器的使用、函數(shù)的結(jié)構(gòu)及調(diào)用規(guī)則等,只有這樣才能正確完成 C語(yǔ)言對(duì)匯編模塊的調(diào)用。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 33 第 4章 C55x處理器的軟件設(shè)計(jì) 寄 存 器 保 存 方 用 途 AC0,AC1,AC2,AC3 父函數(shù) 16位、 32位或 40位數(shù)據(jù),或 24位代碼指針 (X)AR0~ (X)AR4 (X)AR5~ (X)AR7 父函數(shù) 子函數(shù) 16位或 23位指針,獲 16位數(shù)據(jù) T0、 T1 T T3 父函數(shù) 子函數(shù) 16位數(shù)據(jù) RPTC CSR BRC0、 BRC1 BRS1 RSA0、 RSA1 REA0、 REA1 父函數(shù) 父函數(shù) 父函數(shù) 父函數(shù) 父函數(shù) 父函數(shù) 寄 存 器 保 存 方 用 途 SP SSP PC RETA CFCT 子函數(shù)子函數(shù)2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 34 第 4章 C55x處理器的軟件設(shè)計(jì) 1. 函數(shù)調(diào)用規(guī)則 父函數(shù)在調(diào)用子函數(shù)時(shí)首先要將所要傳遞的參數(shù)放入寄存器或堆棧: ⑴ 如果一個(gè)函數(shù)的變量用一個(gè)省略號(hào)聲明(標(biāo)志參數(shù)的數(shù)量是變化的),則剩余的參數(shù)跟著最后一個(gè)被聲明的參數(shù)被傳到堆棧,而堆棧的地址將作為訪問(wèn)其他未聲明參數(shù)的索引。 ⑸ 如果子函數(shù)返回的值是一個(gè)結(jié)構(gòu)或一個(gè)聯(lián)合,則父函數(shù)在本地堆棧為結(jié)構(gòu)分配相應(yīng)的大小。 這個(gè)例子是被調(diào)用子函數(shù)返回一個(gè)結(jié)構(gòu)的例子,實(shí)際調(diào)用是該函數(shù)做了如下轉(zhuǎn)化: fn(amp。 子函數(shù)的返回參數(shù)也將根據(jù)返回參數(shù)的類型使用不同的寄存器,表給出了這一對(duì)應(yīng)關(guān)系。 struct small { int x。 //返回 AC0,參數(shù)通過(guò) AR0、 T0、 T AR1傳遞 struct big fn(int *p1)。 //參數(shù)返回 T0,參數(shù)通過(guò) AC0、 AR0傳遞 int printf(char *fmt, ...)。 ⑵ 如果子函數(shù)修改一些寄存器,如 T T AR5~AR7,需要子函數(shù)將這些數(shù)壓?;虬阉鼈兇鎯?chǔ)到一個(gè)沒(méi)有使用的寄存器中。 ⑷ 子函數(shù)執(zhí)行代碼。 ⑺ 子函數(shù)使堆棧返回調(diào)用前狀態(tài)。 在調(diào)用匯編模塊時(shí)還應(yīng)注意如下問(wèn)題: 3. C/C++與匯編語(yǔ)言的接口 ⑴ 調(diào)用 C54x匯編函數(shù)時(shí),應(yīng)使用 C54X_CALL或C54X_FAR_CALL關(guān)鍵字。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 44 第 4章 C55x處理器的軟件設(shè)計(jì) 下面分別給出定義匯編函數(shù)和變量,以及在 C語(yǔ)言中調(diào)用這些函數(shù)和變量的例子。 i = asmfunc( i, amp。 返回 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 45 第 4章 C55x處理器的軟件設(shè)計(jì) 3. C/C++與匯編語(yǔ)言的接口 調(diào)用匯編模塊中所定義變量的例子如下: 匯編程序: .bss _var,1 。 /* 使用變量 */ 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 46 第 4章 C55x處理器的軟件設(shè)計(jì) 3. C/C++與匯編語(yǔ)言的接口 ⑸ 如果 C/C++中的變量要在匯編語(yǔ)言中訪問(wèn),則該變量應(yīng)用 .global聲明。 CPL = = 0 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 47 ⑺ 在匯編語(yǔ)言中可以通過(guò) .set、 .global命令聲明全局常量,這些常量在 C/C++中可以通過(guò)特殊的方式訪問(wèn)。例如: 第 4章 C55x處理器的軟件設(shè)計(jì) 3. C/C++與匯編語(yǔ)言的接口 匯編語(yǔ)言: _table_size .set 10000 。table_size)) …… …… …… for ( i–0。 編譯器產(chǎn)生的可以重新定位的代碼和數(shù)據(jù)塊叫做段。常用的未初始化段包括堆棧和系統(tǒng)堆棧段( .stack和 .sysstack)、存儲(chǔ)全局和靜態(tài)變量的 .bss段以及為分配動(dòng)態(tài)存儲(chǔ)器保留的 .sysmem段等。] C++中則采用下面的語(yǔ)句: pragma CODE_SECTION (“ section name‖) [。************************************************* 。] C++中的語(yǔ)法是: pragma DATA_SECTION ( “ section name‖) [。 寄存器模式設(shè)置 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 56 第 4章 C55x處理器的軟件設(shè)計(jì) 在小存儲(chǔ)器模式下 , 代碼段和數(shù)據(jù)段的長(zhǎng)度和位置都受到一定限制 。 大存儲(chǔ)器模式下可以更加方便地存放數(shù)據(jù) , 而不必過(guò)多地考慮數(shù)據(jù)頁(yè)的限制 。 C55x還存在輔助堆棧 , 主堆棧主要存放低 16位地址 , 而輔助堆棧則存放 C55x返回的高 8位地址 , 編譯器通過(guò)輔助堆棧指針 ( SSP) 操作輔助堆棧 。 __SYSMEM_SIZE中存放的內(nèi)存池的大小 ( 單位為字節(jié)) , 系統(tǒng)默認(rèn)大小為 2021個(gè)字節(jié) 。 struct big *table。 為了保證分配 , 編譯器會(huì)在結(jié)構(gòu)的開(kāi)頭 、 中間或結(jié)尾進(jìn)行填充 , 以保證結(jié)構(gòu)的長(zhǎng)度為偶數(shù) 。 STATIC VARS */ .sysmem DARAM0 fill=0xBEEF /* DYNAMIC MALLOC AREA */ .stack DARAM0 fill=0xBEEF /* PRIMARY SYSTEM STACK */ .sysstack DARAM0 fill=0xBEEF /* SECONDARY SYSTEM STACK */ .cio DARAM0 fill=0xBEEF input DARAM1 fill=0xBEEF /* Input data */ output DARAM2 fill=0xBEFF /* Output data */ writdata DARAM3 fill=0xBEFF /* Write pen point */ para DARAM4 fill=0xBEFF /* Tranfer parameter */ intvecs DARAM5 fill=0xBEFF paradata DARAM6 fill=0x7 time DARAM7 fill=0 .ioport IOPORT PAGE 2 }
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1