




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、DSP匯編偽指令集講解一一 相關(guān)的概念:相關(guān)的概念:v1.偽指令偽指令宏指令宏指令匯編指令匯編指令偽指令偽指令:v是在匯編和連接的時(shí)候提供控制信息和數(shù)據(jù),并不產(chǎn)生目標(biāo)代碼。宏指令宏指令:v用戶自己創(chuàng)建的指令,在匯編時(shí)將其展開并匯編為對(duì)應(yīng)的目標(biāo)代碼。匯編指令匯編指令:v在匯編時(shí)將產(chǎn)生一一對(duì)應(yīng)的目標(biāo)代碼。v2.段段頁頁段段:目標(biāo)文件的最小單位稱為段,它是在存儲(chǔ)器中占有連續(xù)空間的代碼塊或數(shù)據(jù)塊。頁:頁:64K的數(shù)據(jù)存儲(chǔ)器可以分為512個(gè)數(shù)據(jù)頁,每頁的大小是128字。v3. 輸出段:輸出段:在SECTIONS偽指令描述的輸出文件中定義的段,這些段被定義好了內(nèi)容以及怎么被分配。v4.源列表文件:源列表文
2、件:將源文件進(jìn)行匯編,在產(chǎn)生目標(biāo)文件的同時(shí),還可以產(chǎn)生源列表文件。它是在匯編器對(duì)源程序進(jìn)行匯編后產(chǎn)生的目標(biāo)代碼和源語句的列表文件??梢詢?yōu)化編譯器輸出。v5. 宏定義與子程序的區(qū)別:宏定義與子程序的區(qū)別:宏定義宏定義 為了簡(jiǎn)化匯編語言源程序的書寫,通常把一些出現(xiàn)較為頻繁的程序段定義為宏指令,當(dāng)程序需要被執(zhí)行時(shí),只需要一條宏調(diào)用語句。使用宏指令的優(yōu)點(diǎn)在于可以有效的縮短源程序的長(zhǎng)度,節(jié)省代碼占用內(nèi)存空間,使得代碼易讀,同時(shí)減少了重復(fù)書寫引起的錯(cuò)誤。子程序子程序 是一個(gè)程序段,在程序中通過跳轉(zhuǎn)指令調(diào)用,在每次調(diào)用的時(shí)候,都需要把整個(gè)子程序復(fù)制到內(nèi)存中運(yùn)行,占用更多的內(nèi)存空間。v6. SPC介紹介紹:匯
3、編器為每個(gè)段保留一個(gè)獨(dú)立的程序計(jì)數(shù)器(SPC),匯編器從0地址開始處理每一個(gè)段,同一個(gè)段均按順序存放。連接器根據(jù)每個(gè)段在內(nèi)存圖的最后位置進(jìn)行再定位。二二. DSP匯編的工作原理:匯編的工作原理:1. 匯編編譯連接:結(jié)合圖進(jìn)行講述2. COFF文件格式文件格式:Common Object File Format 使用匯編器可以將匯編語言源程序匯編成為目標(biāo)文件,用連接器將若干個(gè)目標(biāo)文件連接成一個(gè)可以被TMS320C1X/C2000/C5X芯片執(zhí)行的可執(zhí)行文件。這些目標(biāo)文件的格式稱為通用目標(biāo)文件格式COFF。COFF文件總包括3個(gè)默認(rèn)的段:文本段(.text):通常包括可執(zhí)行代碼。數(shù)據(jù)段(.data
4、):通常包括已初始化的數(shù)據(jù)。預(yù)留段(.bss):通常保留用于未初始化變量的空間。三三. 偽指令的功能偽指令的功能偽指令的功能包括:偽指令的功能包括:v1.把代碼和數(shù)據(jù)匯編到指定的段。v2.為未定義的變量保存空間。v3.控制列表文件。v4.分配存儲(chǔ)器。v5.匯編條件塊。v6.定義全局變量。v7.指定匯編器能得到的宏。v8.檢查符號(hào)調(diào)試信息。v1.段定義偽指令:把匯編程序的各個(gè)部分與適當(dāng)?shù)亩危〝?shù)據(jù)塊或程序塊)聯(lián)系起來。.bss, .data, .text, .sect, .usect;v2.初始化常數(shù)偽指令:在當(dāng)前段中匯編數(shù)值。.bes, .space, .byte, .field, .float
5、, .bfloat, .int .word, .long, .blong, .string;v3.段程序計(jì)數(shù)器排列偽指令:使段程序計(jì)數(shù)器SPC指向預(yù)定的位置(例如頁邊界)。.align, .even;v4.輸出列表格式偽指令:控制列表文件的格式。.drlist, .drnolist, .list, .fcnolist, .length, .width,.list, .nolist, .mlist, .mnolist, .opinion, .page, .sslist, .ssnolist, .tab, .title四四. 偽指令的分類偽指令的分類v5.引用其他文件偽指令:提供或者獲取文件的信息
6、。v.copy, .include, .global, .def, .ref, .mlib; v6.條件匯編偽指令:v.if, .elseif, .else, .endif, .loop, .break, v.endloop;v7.匯編時(shí)的符號(hào)偽指令:把自定義的符號(hào)等同于常數(shù)值或者字符串;v.asg, .eval, .set, .equ, .struct, .endstruct,v .newblockv8.其他偽指令:.end, .label, .mmregs, .port, .sblock, v.version, .emsg, .wmsg;五五. 常用的偽指令的講解常用的偽指令的講解:v1
7、.alignv用途:用途:.align偽指令重置短程序計(jì)數(shù)器(SPC),使其指向下一個(gè)頁邊界,以保證后面的代碼從一個(gè)數(shù)據(jù)頁開始。匯編器將原頁中間的未用空間用含NOP指令的字填充,一直填到該頁邊界。v例5.1 v00000004 .byte4 ;0頁:00000079Hv0080 .align ;從下一頁00080H開始v00804572 .string “Error” ; “Er”v0081726F ; “ro”v00827200 ; “r”v0100.align ;從下一頁00100H開始v01000006 .byte6新的一頁v2 .bes 在當(dāng)前段中保留一個(gè)指定數(shù)目的位數(shù),并用0填充。用
8、位數(shù)(n*16)可以保留n個(gè)字單元。v例5.2v00070100.word 100h, 200hv00080200v0009 Res_1.space 17v000B000F.word 15v000C Res_2.bes 20v000E00BA.byte 0BAhv000F Res_3.space 7*16v3 .bssv 用法: .bss 符號(hào),字長(zhǎng)符號(hào),字長(zhǎng), 塊標(biāo)志塊標(biāo)志v.bss 該指令表示在RAM中保留空間。v(1)符號(hào)是一個(gè)必要參數(shù),它指向.bss保留空間的第一個(gè)地址。字長(zhǎng)也是必需參數(shù),它是一個(gè)絕對(duì)表達(dá)式,表示匯編在.bss段內(nèi)分配多個(gè)字。v(2)字長(zhǎng)也是必需參數(shù),它是一個(gè)絕對(duì)表達(dá)式
9、,表示匯編器在.bss段內(nèi)分配多個(gè)字。v(3)塊標(biāo)志是可選參數(shù),如果不指定塊標(biāo)志或指定為0,則匯編器在當(dāng)前.bss段SPC處分配空間;如果塊標(biāo)志為1,則匯編器將檢查當(dāng)前SPC和頁邊界之間是否有足夠的空間為變量分配,若有就連續(xù)分配,若無就從下頁開始分配。v4 .copy, .include.copy, .include告訴編譯器從其他文件中讀入源語句。區(qū)別在于:.copy讀入的源語句將在列表文件中列出,而.include偽指令讀入的不在列表文件中列出。當(dāng)匯編器遇到.copy和和 .include偽指令時(shí),將停止匯編當(dāng)前的源文件語句,而去編譯.copy和和 .include文件中的語句,然后繼續(xù)匯
10、編.copy和和 .include后開始的源文件語句。v5 .data , .text.data是數(shù)據(jù)段定義偽指令。它告訴匯編器把源代碼匯編到.data段中,且.data成為當(dāng)前段。該段通常用來存放數(shù)據(jù)表或初始化前的變量。 .text:定義.text段中的代碼部分,該部分為可執(zhí)行代碼。.text段是默認(rèn)段,若匯編開始不指定其他段,就自動(dòng)匯編到該段。v6 .title 用法:用法:.title “字符串字符串” 該偽指令為每一頁輸出列表文件打印標(biāo)題(字符串的內(nèi)容)。字符串不能超過65個(gè)字符,匯編器在隨后的頁面中打印出標(biāo)題。其作用是生成標(biāo)志符號(hào),方便通過用反匯編器結(jié)合.title所所定義字符串來觀
11、察生成的*.out文件的代碼。v7 .def , .ref , .global .def , .ref, .global 偽指令所指定的符號(hào)為全局符號(hào),這些全局符號(hào)可以在外部定義或在外部被引用。.def指定在當(dāng)前模塊中定義且可以在其他模塊中使用的符號(hào)。匯編器將該符號(hào)引入符號(hào)表。.ref指定一個(gè)或多個(gè)在當(dāng)前模塊中使用但在其他模塊中定義的符號(hào)。一般與.def定義的符號(hào)對(duì)應(yīng)。匯編器將該符號(hào)標(biāo)記為未定義的外部符號(hào)放入目標(biāo)符號(hào)表,由連接器在連接時(shí)處理該符號(hào)的定義。.global同時(shí)具備.def , .ref的功能,需要時(shí)可代替它們。v8 .sect , .usect - 8.1 .usect用法: 符號(hào)
12、名符號(hào)名 .usect “段名段名”,字長(zhǎng),字長(zhǎng), 塊邊界塊邊界 .usect為一個(gè)未命名段中的變量保留空間。類似.bss偽指令(都為保留空間,但.usect可以在內(nèi)存中任意定義,而.bss則是獨(dú)立的)。(1)符號(hào)名符號(hào)名指向.usect指定的第一個(gè)單元,它代表所預(yù)留空間的變量名。(2)段名段名告訴編譯器從哪一個(gè)命名段開始保留空間。段名放在雙引號(hào)內(nèi),前8個(gè)字符有效。(3)字長(zhǎng)字長(zhǎng)定義了該段保留的字?jǐn)?shù)空間,可以用表達(dá)式表示。(4)塊邊界塊邊界為可選項(xiàng),如果為非0,則改段為分塊段。表示在進(jìn)行地址分配時(shí),盡量不超過一頁,若超過一頁時(shí),則從另一頁的邊界開始。 用.usect對(duì)同一段名重復(fù)定義,可以將連
13、續(xù)存放在存儲(chǔ)器的若干變量定義在同一個(gè)段內(nèi)。v本例中用.usect偽指令定義兩個(gè)未初始化的命名段var1和var2。符號(hào)ptr和array分別指向var1段和var2段的第一個(gè)字。 dflag指向var1段中50個(gè)字塊中的第一個(gè)字。vSPC 目標(biāo)代碼源程序v0000.text ;匯編到.text段v0000 2003 LACC03hv0000ptr .usect“var1”,1 ;在var1段保留一個(gè)字v0001array .usect“var1”,100 ;在var1段保留100個(gè)字v0001 0037ADD037hv0065dflag.usect“var1”,50v0002 0065ADD
14、dflag ;還在.text段v0000vec.usect“var2”,100 ; 在var2段保留100個(gè)字v00030000ADDvec ;還在.text段v .globalarray ;將array定義為外部符號(hào)名.usect執(zhí)行之后的存儲(chǔ)器分布示意圖8.2 .sect用法用法: .sect“段名段名”定義初始化命名段。段名必須用引號(hào)引起。該段中可包括代碼或者數(shù)據(jù),類似于.text和.data。v9.set偽指令:偽指令:用法:用法: 符號(hào)符號(hào) .set 數(shù)值數(shù)值 .set定義的符號(hào)在符號(hào)表中,不能重復(fù)定義。在數(shù)值表達(dá)式中的符號(hào)必需事先定義。用.def或.global可以使用由.set定
15、義的符號(hào)被其他模塊調(diào)用。 例: IMR .set 0004h ; Interrupt Mask Register IFR .set 0006h ; Interrupt Flag Registerv10 .byte, .float , .bfloat, .int , .word, .long , .blong, .string, .field10.1 .byte用法:用法: 標(biāo)號(hào)標(biāo)號(hào) .byte 數(shù)值數(shù)值1,數(shù)值,數(shù)值2,.byte指令將一個(gè)或者多個(gè)8位的值植入當(dāng)前段的連續(xù)字中。數(shù)值可以是常數(shù),表達(dá)式,字符串。使用標(biāo)號(hào)的時(shí)候,匯編器指向第一個(gè).byte位置。每個(gè).byte指令可以定義100個(gè)設(shè)置
16、,若有字符串,則總數(shù)值長(zhǎng)度不超過200個(gè)字符。例如:0000.space 100h*160100strx.byte”ab”,”c”0101后面幾個(gè)指令用法也基本類似,但數(shù)據(jù)類型不同。六六.簡(jiǎn)單的程序設(shè)計(jì)過程:簡(jiǎn)單的程序設(shè)計(jì)過程: 在程序設(shè)計(jì)時(shí),一般來說需要進(jìn)行規(guī)范的文件管理,使得源代碼組織清晰易讀,有利于交流和加快開發(fā)的進(jìn)度。v1.如果需要在多個(gè)模塊中使用相同的設(shè)置和中斷處理,通常將芯片映射到I/O空間的寄存器地址及標(biāo)號(hào)、預(yù)置變量和常數(shù)的空間等設(shè)置語句集中在一個(gè)文件中,稱為I/O寄存器頭文件寄存器頭文件(如init.h)。v2.將轉(zhuǎn)移中斷矢量地址的指令集中在一個(gè)文件中,稱為中斷矢量頭文件(如v
17、ector.h)。v3.將定義程序,數(shù)據(jù)和I/O空間地址塊大小和位置的偽指令集中在一個(gè)文件稱為命令文件(如F2407.cmd)。以上三個(gè)合稱為公用文件。v4. 當(dāng)編寫具體的應(yīng)用程序的時(shí)候,用.copy或.include偽指令將I/O寄存器頭文件合中斷矢量頭文件復(fù)制到應(yīng)用程序中,形成一個(gè)匯編源程序(如delay.asm),再由匯編器進(jìn)行匯編后生成一個(gè)目標(biāo)文件(如delay.obj),最后連接器把該目標(biāo)文件和命令文件相連接,生成可執(zhí)行文件(如delay.out).5. 命令文件*.cmd文件的介紹:TMS320系列芯片的存儲(chǔ)器配置隨應(yīng)用的不同而不同。用連接器偽指令MEMORY可以確定目標(biāo)系統(tǒng)的各種
18、內(nèi)存配置。當(dāng)MEMORY決定了存儲(chǔ)器模式后,可以用連接器偽指令SECTIONS確定連接器組合輸入段的方法和輸出段在存儲(chǔ)器中的位置。v3.1 MEMORY偽指令確定在目標(biāo)系統(tǒng)中具有物理位置并且可以被程序使用的存儲(chǔ)器范圍,該指令并不對(duì)存儲(chǔ)器進(jìn)行邏輯配置。TMS320器件具有獨(dú)立的程序存儲(chǔ)器,數(shù)據(jù)存儲(chǔ)器和I/O存儲(chǔ)器空間,連接器允許用戶使用MEMORY偽指令的PAGE選項(xiàng)單獨(dú)配置這些地址空間。(1)MEMORY的一般格式:MEMORYPAGE0: 存儲(chǔ)器名1(屬性): ORIGIN = 常數(shù),LENGTH= 常數(shù).PAGEn: 存儲(chǔ)器名 n(屬性):ORIGIN = 常數(shù),LENGTH= 常數(shù)v說明
19、:1.PAGE定義一個(gè)存儲(chǔ)空間,用戶可以定義多達(dá)255頁。通常默認(rèn)PAGE0定義程序存儲(chǔ)器,PAGE1定義數(shù)據(jù)存儲(chǔ)器。每個(gè)PAGE代表一個(gè)完全獨(dú)立的地址空間。在PAGE0上以配置的存儲(chǔ)器可以和在PAGE1上已配置的存儲(chǔ)器重疊。在同一頁中的存儲(chǔ)器名不能有相同的名字,且不能重疊。2. ORIGIN指定存儲(chǔ)器區(qū)域的起始地址,可以是16位常數(shù)、十進(jìn)制,八進(jìn)制或者十六進(jìn)制常數(shù)。LENGTH指定存儲(chǔ)器的長(zhǎng)度。v3.2 SECTIONS偽指令:SECTIONS功能:v1 描述輸入段怎樣被組合到輸出段內(nèi);v2 定義在執(zhí)行程序中的輸出段;v3 規(guī)定輸出段在存儲(chǔ)器中的位置;v4 允許重新命名輸出段;v格式:SEC
20、TIONS段名1:特性1,特性2,段名1:特性1,特性2,特性列表v3.2.1 SECTIONS偽指令中的特性列表選項(xiàng)有以下幾種:(1)裝載地址:規(guī)定段將被裝載在存儲(chǔ)器中的位置。 LOAD = allocation 或 allocation注:allocation 是MEMORY偽指令所定義的范圍 內(nèi)地址,包括ROM,RAM,實(shí)際地址值(16位常數(shù))等.(2)運(yùn)行地址:定義段在存儲(chǔ)器內(nèi)運(yùn)行的位置。 RUN = allocation 或 RUN allocationv對(duì)上述兩個(gè)屬性的說明: 裝載地址裝載地址和運(yùn)行地址運(yùn)行地址通常是相同的,此時(shí)每個(gè)段只具有單個(gè)地址。但也有例外,如在基于ROM的系統(tǒng)
21、中,若有性能要求嚴(yán)格的代碼必須裝入ROM,但是它在RAM中運(yùn)行的速度會(huì)更快。這就需要設(shè)置兩個(gè)地址,用LOAD設(shè)置它的裝載地址,用RUN設(shè)置它的運(yùn)行地址。(3)調(diào)準(zhǔn)地址:規(guī)定段應(yīng)在地址邊界上開始。(4)塊地址:規(guī)定段必須裝載兩個(gè)地址邊界之間,它把段定位在大小為n(2的冪)的塊內(nèi)任何地方。如果段大于塊,那么段將從該邊界開始。(5)輸入段:定義組成輸出段的輸入段。 輸入文件中的段組合起來形成輸出段,連接器按照所列出的輸入段的次序連接并結(jié)合它們。如果沒有輸入段說明,連接器將從輸入文件中所有的.text , .data, .text段一起組合到對(duì)應(yīng)的默認(rèn)的輸出段中。(6)段類型:定義特殊段類型的標(biāo)志。t
22、ype = COPY 或type = DSECT 或type =NOLOADCOPY和DSECT創(chuàng)建的是一個(gè)虛段,它不包括在輸出段存儲(chǔ)器分配內(nèi),也不占據(jù)存儲(chǔ)器空間,不包括在存儲(chǔ)器映象列表中。但虛段中定義的全局符號(hào)可以被其他輸出段引用。NOLOAD創(chuàng)建的段不將段的內(nèi)容,重定位信息及行號(hào)信息放在輸出模塊中。但連接器為其分配空間并包括在存儲(chǔ)器映象列表中。(7)填充值:定義用于填充初始化空位的數(shù)值。用.field偽指令填充數(shù)據(jù)。一個(gè)*.cmd文件的例子v例:F2407.cmdMEMORY PAGE 0: /* PROGRAM MEMORY */ VECS:ORIGIN=0000H,LENGTH=0044H PM:ORIGIN=00100H,LENGTH=7000H PAGE 1: /* DATA MEMORY */ BLK_B2 :ORIGIN=0060H, LENGTH=20H /* Block B2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上半年安徽合肥市肥西縣城鄉(xiāng)建設(shè)投資(集團(tuán))限公司下屬子公司招聘29人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年寧波市發(fā)展規(guī)劃研究院招考工作人員易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025中國二冶集團(tuán)(內(nèi)蒙古)有限公司招聘筆試參考題庫附帶答案詳解
- 2024莆田城市園林發(fā)展集團(tuán)有限公司2024年11月工人招聘筆試參考題庫附帶答案詳解
- 2025年雙排滾子鏈條項(xiàng)目可行性研究報(bào)告
- 2025年專業(yè)連接頭項(xiàng)目可行性研究報(bào)告
- 2024湖北武漢臨空港經(jīng)濟(jì)技術(shù)開發(fā)區(qū)(武漢市東西湖區(qū))選聘區(qū)屬國有企業(yè)總經(jīng)濟(jì)師5人筆試參考題庫附帶答案詳解
- 2024湖北武漢市漢江集團(tuán)公司面向集團(tuán)內(nèi)部招聘擬錄用人選筆試參考題庫附帶答案詳解
- 專創(chuàng)融合-基于3D打印的原型設(shè)計(jì)與制作知到課后答案智慧樹章節(jié)測(cè)試答案2025年春成都工業(yè)職業(yè)技術(shù)學(xué)院
- 2024廣西環(huán)江毛南族自治縣公開招聘國有企業(yè)高層管理人員2人筆試參考題庫附帶答案詳解
- 班級(jí)管理案例與應(yīng)用知到智慧樹章節(jié)測(cè)試課后答案2024年秋哈爾濱師范大學(xué)
- 建設(shè)單位保證工程安全措施的實(shí)施方案
- 第16課數(shù)據(jù)管理與編碼(教案)四年級(jí)全一冊(cè)信息技術(shù)人教版
- 2024中考物理真題匯編:電與磁(含解析)
- 2024年小客車指標(biāo)借用協(xié)議3篇
- 骨科術(shù)后譫妄患者的護(hù)理
- 《肺動(dòng)靜脈瘺》課件
- 約定工資結(jié)清協(xié)議書(2篇)
- 特殊作業(yè)安全管理監(jiān)護(hù)人專項(xiàng)培訓(xùn)課件
- 湖北省荊州市英語初一上學(xué)期期末試題與參考答案(2024年)
- 鶴壁海格龍升3萬噸溴系列新材料產(chǎn)品環(huán)評(píng)資料環(huán)境影響
評(píng)論
0/150
提交評(píng)論