版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4章TMS320C6000系列DSP節(jié)目開發(fā),TMS320C6000系列DSP的C/C語(yǔ)言特性,TMS320C6000系列DSP的C/C語(yǔ)言關(guān)鍵字,pragma偽命令,初始化靜態(tài)變量和全局變量,TMS320C6000系列DSP的C 4源(主機(jī))和執(zhí)行(目標(biāo))字符集是ASCII代碼,沒有多字節(jié)字符。字符常量或字符串常量的十六進(jìn)制或八進(jìn)制轉(zhuǎn)義序列或字符串常量最多具有32位值。具有多個(gè)字符的字符常量被編碼為序列的最后一個(gè)字符,例如abc=c。4.1.1 TMS320C6000系列DSP的C語(yǔ)言特征,2數(shù)據(jù)類型表4-1列出了TMS320C6000編譯器的各種標(biāo)量數(shù)據(jù)類型、數(shù)量級(jí)標(biāo)記和值范圍。許多值范
2、圍值可以用作頭文件limits.h的標(biāo)準(zhǔn)宏。4.1.1 TMS320C6000系列DSP的C語(yǔ)言特征,3數(shù)據(jù)轉(zhuǎn)換(1)浮點(diǎn)類型到整數(shù)的轉(zhuǎn)換,0前整數(shù)部分修剪(2)指針類型和整數(shù)類型之間的自由轉(zhuǎn)換。4在除以有表達(dá)式(1)符號(hào)的兩個(gè)整數(shù)時(shí),如果其中一個(gè)為負(fù)數(shù),則商為負(fù)數(shù),剩下的符號(hào)等于分子的符號(hào)。斜線(/)用于查找商人,百分比符號(hào)(%)用于查找其馀部分。例如:將帶符號(hào)的數(shù)字右側(cè)移動(dòng)到算術(shù)移動(dòng)中:10/-3=-3,-10/3=-3 10%-3=1,-10%3=-1 (2)(2)核心成員用詞包裝。(3)整數(shù)類型的位段有符號(hào),位段以高位開始的詞包裝,不能超過(guò)詞的界限。(4)中斷關(guān)鍵字interrupt只
3、能用于沒有參數(shù)的void類型函數(shù)。6字典處理器字典處理器忽略不支持的#pragma相似命令。4.1.2 TMS320C6000系列DSP的C語(yǔ)言特性,TMS320C6000系列DSP編譯器支持ISO標(biāo)準(zhǔn)的C語(yǔ)言,但具有與標(biāo)準(zhǔn)C不同的特性。(1)不包括完整的C標(biāo)準(zhǔn)庫(kù)支持,但包括C子集和基本語(yǔ)言支持。(2)支持C的庫(kù)工具(C library facilities)的頭文件不包含、(3)包含的c標(biāo)準(zhǔn)庫(kù)頭文件為和。(typeinfo文件中不包含對(duì)bad_cast和bad_type_id的支持。(5)不支持異常事件處理。(6)默認(rèn)情況下,禁止運(yùn)行時(shí)類型信息(RTTI)。RTTI允許您在運(yùn)行時(shí)確定不同類型
4、的對(duì)象。-rtti編譯選項(xiàng)可用于創(chuàng)建。(7)如果兩個(gè)類不相關(guān),則reinterpret_cast類型是指向一個(gè)類的成員的指針,不允許指向另一個(gè)類的成員的指針。(8)不支持標(biāo)準(zhǔn)的tesp.res和temp.dep中所述的“綁定到模板的兩相名稱”。(9)無(wú)法實(shí)現(xiàn)模板參數(shù)。(10)無(wú)法實(shí)現(xiàn)模板的export關(guān)鍵字。(11)定義為typedef的函數(shù)類型不包括成員函數(shù)cv-qualifiers。(12)類成員模板中的某些說(shuō)明不能放在類定義之外。4.2 TMS320C6000系列DSP的C/C語(yǔ)言關(guān)鍵字,1const關(guān)鍵字(1)如果在對(duì)象定義中指定關(guān)鍵字volatile(例如volatile const
5、 int x),則volatile關(guān)鍵字將為(2)在這兩種情況下,為對(duì)象分配存儲(chǔ)空間與不使用const關(guān)鍵字時(shí)相同。在一個(gè)定義中使用const關(guān)鍵字很重要。例如,下面代碼的第一句定義常量指針p為整數(shù)的變量,第二句定義變量指針q為整數(shù)常量:int * const p extern c register volatile unsigned int CSR;Extern c register volatile unsigned int IFR:Extern c register volatile unsigned int ISR:Extern c register volatile unsigned
6、 int ICR:4.2 TMS320C6000系列DSP中的C/C語(yǔ)言關(guān)鍵字3interrupt關(guān)鍵字當(dāng)用戶在函數(shù)定義中使用interrupt關(guān)鍵字時(shí),編譯器按中斷函數(shù)所需的寄存器存儲(chǔ)規(guī)則和中斷返回的特殊順序存儲(chǔ)寄存器,然后生成特殊的返回代碼序列。您可以將interrupt關(guān)鍵字與定義為Void但沒有參數(shù)的函數(shù)配合使用。中斷函數(shù)主體可以使用局部變量和自由堆棧或全局變量。示例:interrupt void int _ handler()unsighed int flags;4.2在TMS320C6000系列DSP的C/C語(yǔ)言關(guān)鍵字、4near和far關(guān)鍵字語(yǔ)法中,near和far關(guān)鍵字被視為存
7、儲(chǔ)類的尋址數(shù)。它們出現(xiàn)在存儲(chǔ)庫(kù)類指示符和類型的前面、后面和中間。牙齒兩個(gè)存儲(chǔ)類別的地址更改數(shù)不能在一個(gè)定義中使用。有效的使用實(shí)例代碼如下:far static int x;static near int x;static int far x;far int foo();static far int foo();在4.2 TMS320C6000系列DSP的C/C語(yǔ)言關(guān)鍵字中,對(duì)5restrict關(guān)鍵字示例4.2指針使用restrict關(guān)鍵字。Void func1 (int * restrict a,int * restrict b)/*,其中func1()函數(shù)的代碼*/牙齒示例代碼中使用rest
8、rict關(guān)鍵字可確保編譯器func1的指針a和b指向的內(nèi)存范圍不重疊示例4Void func 2 (int c restrict,int d restrict)int I:For(I=0;I 64I )/陣列總計(jì)和陣列di的加1作業(yè)ci=didi=1;4.2 TMS320C6000系列DSP的C/C語(yǔ)言關(guān)鍵字6volatile關(guān)鍵字優(yōu)化器分析數(shù)據(jù)流以最小化存儲(chǔ)訪問。如果用戶向C/C程序?qū)懭胍蕾囉诖鎯?chǔ)訪問的代碼,則必須使用volatile關(guān)鍵字識(shí)別訪問。編譯器不會(huì)優(yōu)化對(duì)volatile變量的引用。下列程式碼會(huì)循環(huán)使用oxFF讀取的單位:unsignedint * ctrlWhile(*ctrl!
9、=oxff);在牙齒代碼中,*ctrl是循環(huán)不變的表達(dá)式,因此循環(huán)優(yōu)化為單個(gè)內(nèi)存讀取。要修改此優(yōu)化,可以將*ctrl定義為volatile unsigned int * ctrl,4.2 TMS320C6000系列DSP的C/C語(yǔ)言關(guān)鍵字,7asm語(yǔ)句TMS320C6000的C/C編譯器,牙齒功能可以定義為C/C語(yǔ)言,Asm語(yǔ)句提供對(duì)C/C語(yǔ)言不能提供的硬件的訪問。Asm語(yǔ)句類似于調(diào)用名為asm的函數(shù),該函數(shù)使用ASM(“assembler text”)格式的字符串常量作為參數(shù)。編譯器將參數(shù)直接復(fù)制到編譯器的輸出文件中。組件主體必須用雙引號(hào)括起來(lái)。所有常規(guī)字符串都保留原始定義。例如,包含引號(hào)的
10、。您可以插入string醫(yī)生指令A(yù)SM(“str 3360 . string”ABC”)。4.3 pragma醫(yī)生命令、pragma醫(yī)生指令告知編譯器如何處理特定的函數(shù)、對(duì)象或代碼段。TMS320C6000中的C/C編譯器支持以下醫(yī)生指令:code _ section data _ aligndata _ mem _ bank data _ section func _ cannot _ inline func _ ext Temfunc _c語(yǔ)言的命令語(yǔ)法格式為# pragma code _ section( section name );示例4.4使用CODE_SECTION命令。c源檔案
11、:# pragma code _ section (fn,“my _ Sect”)int fn(int x)return x;4.3 pragma醫(yī)生指令使用#pragma CODE_SECTION(fn,my_sect)創(chuàng)建my_sect段,并將fn函數(shù)分配給my_sect段,組件源檔案:Sect my _ Sect 。global _ fn* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * funs* *;* Regs Modified : SP * Regs Used : A4、B
12、3、SP *;* local framesize : 0 args 4 auto 0 save=4 byte *;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *|6| SUB .D2 SP,8,SP;|4| STW .D2T1 A4,* SP(4);|4| ADD .S2 8、SP、SP;| 6 | NOP 2;BRANCH OCCURS|6|,4.3 pragma醫(yī)生指令,2DATA_SECTION指令DATA_SECTION指令指定命名段中符號(hào)的空間。c語(yǔ)
13、言的命令語(yǔ)法格式為# pragmadata _ section (symbol, sectionname )。c語(yǔ)言的命令語(yǔ)法格式為# pragmadata _ section( section name )。4.3 pragma醫(yī)生命令,使用示例4.5DATA _ SECTION命令。c源檔案:# pragmadata _ section (bufferb, my _ Sect )charbuffera 512;Char bufferB512c源檔案:char bufferA512# pragmadata _ section( my _ Sect )charbuf ferb 512;集合源檔
14、案:global _ buffera.bss _ buffera,512,4 . global _ bufferb _ bufferb 3360 . usect my 對(duì)齊的邊界是符號(hào)的預(yù)設(shè)最大邊界或常數(shù),常數(shù)是2的整數(shù)平方。c語(yǔ)言的命令語(yǔ)法如下:# pragmadata _ align (symbol,constant);在c中,牙齒命令的語(yǔ)法如下:# pragmadata _ align(constant);4FUNC_CANNOT_INLINE指令FUNC_CANNOT_INLINE指令通知編譯器無(wú)法擴(kuò)展以直接插入命名函數(shù)。使用Pragma命令的所有函數(shù)都將忽略使用其他方法指定的直接插入。牙齒命令必須出現(xiàn)在函數(shù)的聲明和引用之前。C語(yǔ)言的命令語(yǔ)法格式為# pragmafunc _ cannot _ inline(func)。C語(yǔ)言的命令語(yǔ)法格式為# pragmafunc _ cannot _ inline;4.3 pragma醫(yī)生命令、5FUNC_EXT_CALLED命令FUNC_EXT_CALLED命令指定優(yōu)化程序保留這些C/C函數(shù)或這些C/C函數(shù)調(diào)用的所有函數(shù)。這些函數(shù)用作C/C的入口點(diǎn)。牙齒命令必須出現(xiàn)在函數(shù)的聲明和引用之前。c中FUNC_EXT_CALLED命令的語(yǔ)法格式如下:# #
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026河南新鄉(xiāng)工程學(xué)院招聘?jìng)淇碱}庫(kù)附答案詳解
- 2025湖北武漢市華中農(nóng)業(yè)大學(xué)襄陽(yáng)書院勞動(dòng)聘用制人員招聘2人備考題庫(kù)完整答案詳解
- 2025年12月重慶市榮昌區(qū)人民醫(yī)院感染性疾病科信息錄入員、藥劑科靜配中心人員招聘2人備考題庫(kù)及答案詳解(奪冠系列)
- 2026廣西來(lái)賓市忻城縣城鎮(zhèn)公益性崗位工作人員招聘2人備考題庫(kù)及答案詳解(易錯(cuò)題)
- 2026江蘇南京大學(xué)XZ2025-442現(xiàn)代工程與應(yīng)用科學(xué)學(xué)院科研人員招聘?jìng)淇碱}庫(kù)參考答案詳解
- 2026年福建莆田市城廂區(qū)新任教師公開考核招聘20人備考題庫(kù)及參考答案詳解1套
- 2025北京對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué)政府管理學(xué)院非事業(yè)編人員招聘1人備考題庫(kù)及答案詳解1套
- 2026同濟(jì)大學(xué)附屬養(yǎng)志康復(fù)醫(yī)院(上海市陽(yáng)光康復(fù)中心)招聘?jìng)淇碱}庫(kù)及1套完整答案詳解
- 2026云南臨滄市桑嘎藝術(shù)學(xué)校教師招聘9人備考題庫(kù)及參考答案詳解一套
- 2025江蘇淮安市洪澤區(qū)中醫(yī)院招聘合同制專業(yè)技術(shù)人員2人備考題庫(kù)(第二批)及完整答案詳解一套
- 水平螺旋輸送機(jī)設(shè)計(jì)計(jì)算及參數(shù)表
- 2023-2024學(xué)年宜賓市高一數(shù)學(xué)上學(xué)期期末質(zhì)量監(jiān)測(cè)試卷附答案解析
- 2024版國(guó)開電大法律事務(wù)專科《民法學(xué)2》期末考試總題庫(kù)
- 某排澇泵站工程初步設(shè)計(jì)報(bào)告
- 人教版六年級(jí)第一學(xué)期數(shù)學(xué)期末考試試題(含答案)
- 英語(yǔ)口語(yǔ)8000句(情景模式)
- 企業(yè)上市對(duì)人力資源管理的要求及目前人力資源部現(xiàn)狀分析
- 整流電路教案
- 大橋防腐涂裝工藝試驗(yàn)評(píng)定實(shí)施方案
- 2023第十四屆希望杯五年級(jí)100題
- 2023-2024學(xué)年浙江省諸暨市小學(xué)數(shù)學(xué)六年級(jí)上冊(cè)期末評(píng)估測(cè)試題
評(píng)論
0/150
提交評(píng)論