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

正文內(nèi)容

[工學(xué)]第4章c55x處理器的軟件設(shè)計(jì)(編輯修改稿)

2024-11-12 18:46 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 令即可: 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)境。 例如嵌入跳轉(zhuǎn)指令或者標(biāo)號(hào)將會(huì)引起不可預(yù)測(cè)的后果。 如果采用嵌套匯編語(yǔ)句,在編譯程序時(shí)不應(yīng)采用優(yōu)化功能,采用優(yōu)化功能可能會(huì)調(diào)整匯編語(yǔ)句周圍代碼的排列順序,有可能改變程序的運(yùn)行結(jié)果。 如果采用該方法實(shí)現(xiàn)較復(fù)雜的功能,會(huì)造成程序的可讀性較差,并影響程序的可移植性,因此在采用匯編語(yǔ)言實(shí)現(xiàn)較復(fù)雜的功能時(shí),更可行的方法是獨(dú)立編寫 C語(yǔ)言程序和匯編程序, C語(yǔ)言通過函數(shù)調(diào)用匯編子程序,這樣既可以提高程序的運(yùn)行效率,又保證了程序的可移植性,這要做的優(yōu)點(diǎn)還有程序的結(jié)構(gòu)性較好,并不影響 C語(yǔ)言編譯器的優(yōu)化功能。 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)用。 C語(yǔ)言調(diào)用匯編模塊的接口 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 32 第 4章 C55x處理器的軟件設(shè)計(jì) C語(yǔ)言調(diào)用匯編模塊的接口 1. C/C++中的寄存器規(guī)則 這些規(guī)則決定編譯器在 C語(yǔ)言環(huán)境下如何使用寄存器和如何在調(diào)用函數(shù)時(shí)傳遞參數(shù)。 在函數(shù)調(diào)用時(shí)把函數(shù)調(diào)用方叫做父函數(shù),被調(diào)用方叫做子函數(shù)。 規(guī)則規(guī)定在函數(shù)調(diào)用時(shí)所用到的寄存器需要預(yù)先保存,保存工作部分由父函數(shù)完成,父函數(shù)沒有保存的而又被子函數(shù)用到的寄存器由子函數(shù)保存。 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ù)被傳到堆棧,而堆棧的地址將作為訪問其他未聲明參數(shù)的索引。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 35 第 4章 C55x處理器的軟件設(shè)計(jì) 1. 函數(shù)調(diào)用規(guī)則 ⑵ 編譯器通常先對(duì)所要傳遞的參數(shù)歸類,之后按照所歸類別將參數(shù)放到寄存器中,參數(shù)可以分成三類: ● 數(shù)據(jù)指針( int *, long *, 等) ● 16位數(shù)據(jù)( char, short, int) ● 32位數(shù)據(jù)( long, float, double, 以及函數(shù)指針) 如果參數(shù)是指向數(shù)據(jù)類型的指針,則該參數(shù)就是數(shù)據(jù)指針;如果一個(gè)參數(shù)能夠放入一個(gè) 16位寄存器,則被看成一個(gè)16位數(shù)據(jù);否則該參數(shù)被看成一個(gè) 32位數(shù)據(jù)。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 36 第 4章 C55x處理器的軟件設(shè)計(jì) 1. 函數(shù)調(diào)用規(guī)則 ⑶ 一個(gè) 32位(兩個(gè)字)或小于 32位的結(jié)構(gòu)被當(dāng)作一個(gè) 32位數(shù)據(jù)通過寄存器傳送。 ⑷ 如果結(jié)構(gòu)的長(zhǎng)度大于 2個(gè)字,則通過索引傳送,即編譯器把該結(jié)構(gòu)的地址作為一個(gè)數(shù)據(jù)指針傳送。 ⑸ 如果子函數(shù)返回的值是一個(gè)結(jié)構(gòu)或一個(gè)聯(lián)合,則父函數(shù)在本地堆棧為結(jié)構(gòu)分配相應(yīng)的大小。父函數(shù)將該空間的地址作為第一個(gè)隱含參數(shù)送給子函數(shù),這個(gè)參數(shù)被看作一個(gè)數(shù)據(jù)指針。 ⑸ 下面的例子說明了這一情況。 struct s result = fn(x,y)。 這個(gè)例子是被調(diào)用子函數(shù)返回一個(gè)結(jié)構(gòu)的例子,實(shí)際調(diào)用是該函數(shù)做了如下轉(zhuǎn)化: fn(amp。result, x, y)。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 37 第 4章 C55x處理器的軟件設(shè)計(jì) 1. 函數(shù)調(diào)用規(guī)則 ⑹ 參數(shù)在函數(shù)聲明中的排列位置是與其所分配的寄存器有直接關(guān)系的,它們按照表中所列順序排列。 參 數(shù) 類 型 寄存器分配順序 對(duì)應(yīng)的數(shù)據(jù)類型 16位或 32位數(shù)據(jù)指針 16位數(shù)據(jù) 32位數(shù)據(jù) (X)AR0,(X)AR1, (X)AR2, (X)AR3,(X)AR4 T0, T1, AR0, AR1, AR2, AR3, AR4 AC0, AC1, AC2 數(shù)組、字符串、指針、或占用空間長(zhǎng)度超過兩個(gè)字節(jié)的結(jié)構(gòu) (無符號(hào))字符、短整數(shù),整數(shù) 長(zhǎng)整數(shù)、浮點(diǎn)數(shù)以及長(zhǎng)度小于等于兩個(gè)字節(jié)的結(jié)構(gòu) 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 38 第 4章 C55x處理器的軟件設(shè)計(jì) 1. 函數(shù)調(diào)用規(guī)則 如果參數(shù)的數(shù)量超過可使用寄存器數(shù)量,多余的參數(shù)會(huì)被壓入堆棧,子函數(shù)通過堆棧得到剩余參數(shù)。 子函數(shù)的返回參數(shù)也將根據(jù)返回參數(shù)的類型使用不同的寄存器,表給出了這一對(duì)應(yīng)關(guān)系。 子函數(shù)返回類型 所使用寄存器 說 明 Void char, unsigned char, short int, int long int, float, double struct T0 AC0 (X)AR0 無返回參數(shù) 返回 16位數(shù)據(jù) 返回 32位數(shù)據(jù) 返回地址 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 39 第 4章 C55x處理器的軟件設(shè)計(jì) 1. 函數(shù)調(diào)用規(guī)則 給出參數(shù)傳遞的例子: 首先聲明兩個(gè)結(jié)構(gòu),其中 big的長(zhǎng)度大于兩個(gè)字節(jié),small的長(zhǎng)度等于兩個(gè)字節(jié)。 struct big { long x[10]。 }。 struct small { int x。 }。 int fn(int i1, long l2, int *p3)。 //參數(shù)返回 T0,傳遞參數(shù)分別占用 T0、 AC0、 AR0寄存器 long fn(int *p1, int i2, int i3, int i4)。 //返回 AC0,參數(shù)通過 AR0、 T0、 T AR1傳遞 struct big fn(int *p1)。 //返回 AR0,參數(shù)通過 AR1傳遞 int fn(struct big b, int *p1)。 //返回 T0,參數(shù)通過 AR0、 AR1傳遞 struct small fn(int *p1)。 //參數(shù)返回 AC0,參數(shù)通過 AR0傳遞 int fn(struct small b, int *p1)。 //參數(shù)返回 T0,參數(shù)通過 AC0、 AR0傳遞 int printf(char *fmt, ...)。 //參數(shù)返回 T0,其余參數(shù)通過堆棧傳遞,并通過 fmt的地址進(jìn)行索引 void fn(long l1, long l2, long l3, long l4, int i5)。 //參數(shù)通過 AC0、 AC AC堆棧和 T0傳遞 void fn(long l1, long l2, long l3, int *p4, int *p5, int *p6, int *p7, int *p8, int i9, int i10)。 //參數(shù)通過 AC0、 AC AC AR0、 AR AR ARAR T0、 T1傳遞 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 40 第 4章 C55x處理器的軟件設(shè)計(jì) 2.被調(diào)用函數(shù)的響應(yīng) 被調(diào)用函數(shù)需要完成如下工作: ⑴ 子函數(shù)為本地變量、暫存空間以及函數(shù)本身可能調(diào)用函數(shù)的參數(shù)分配足夠的空間,這些工作要在函數(shù)調(diào)用之初完成。 ⑵ 如果子函數(shù)修改一些寄存器,如 T T AR5~AR7,需要子函數(shù)將這些數(shù)壓?;虬阉鼈兇鎯?chǔ)到一個(gè)沒有使用的寄存器中。如果子函數(shù)修改其他寄存器則不需要預(yù)先存儲(chǔ)這些數(shù)。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 41 第 4章 C55x處理器的軟件設(shè)計(jì) 2.被調(diào)用函數(shù)的響應(yīng) ⑶ 如果子函數(shù)的參數(shù)是一個(gè)結(jié)構(gòu),它所收到的是指向這個(gè)結(jié)構(gòu)的指針。 如果在被調(diào)用函數(shù)中需要對(duì)結(jié)構(gòu)進(jìn)行寫操作,就需要把這個(gè)結(jié)構(gòu)復(fù)制到本地空間中,如果不進(jìn)行寫操作,則可以直接通過指針訪問這個(gè)結(jié)構(gòu) 。 ⑷ 子函數(shù)執(zhí)行代碼。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 42 第 4章 C55x處理器的軟件設(shè)計(jì) 2.被調(diào)用函數(shù)的響應(yīng) ⑸ 函數(shù)按照表 45的規(guī)則返回參數(shù),如果子函數(shù)返回一個(gè)結(jié)構(gòu),父函數(shù)為這個(gè)結(jié)構(gòu)分配空間,并傳遞指針到 (X)AR0中。如果父函數(shù)沒有使用這個(gè)結(jié)構(gòu),則在(X)AR0中返回的地址為 0。 ⑹ 子函數(shù)將先前存儲(chǔ)的寄存器值重新放到寄存器中。 ⑺ 子函數(shù)使堆棧返回調(diào)用前狀態(tài)。 ⑻ 函數(shù)返回。 2021年 11月 10日 TMS320C55x DSP原理及應(yīng)用 43 第 4章 C55x處理器的軟件設(shè)計(jì) C/C++與匯編語(yǔ)言可以通過多種方式聯(lián)系在一起, 其中包括在 C/C++中引用匯編語(yǔ)言中的常量或變量, 并可以在 C語(yǔ)言模塊中調(diào)用匯編代碼模塊 。 C/C++調(diào)用匯編語(yǔ)言模塊時(shí)需要符合
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1