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

正文內(nèi)容

dsp匯編語言程序設(shè)計(jì)-閱讀頁

2025-01-27 18:06本頁面
  

【正文】 options] 匯編器是名為 例如 asm500 l s x 源程序 cjy. obj目標(biāo)文件 、 列表文件 、 符號表 ( 在目標(biāo)文件中 ) 以及交叉引用表 ( 在列表文件中 ) 。 不同種類的區(qū)別 COFF文件種 類 C54x匯編器和 C編譯器建立的是 COFF2文件 。 COFF0 COFF1 COFF2 標(biāo)題格式不相同 數(shù)據(jù)部分是相同 段 ( sections) 的概念 特點(diǎn) 定義 分段的優(yōu)點(diǎn):在目標(biāo)文件中將放置程序 、 數(shù)據(jù) 、 變量的代碼分開 , 便于在鏈接時(shí)作為一個(gè)單獨(dú)的部分分配存儲器 。 段是在存儲器圖中占據(jù)相鄰空間的代碼或數(shù)據(jù)塊 。 目標(biāo)文件中的段與目標(biāo)存儲器之間的關(guān)系 COFF文件中的符號 用于處理符號的匯編命令 外部符號 在一個(gè)模塊中定義 的定義 , 可在另一個(gè)模塊中引用的符號。 .ref:在當(dāng)前模塊中使用 , 但在別的模塊中定義的符號 。 .def x .ref y .global z .global q q: B B3 NOP 4 x: MV A0,A1 MVKL y, B3 B z x在此模塊中定義 , 可被別的模塊引用 。 q在此模塊中定義 , 可被別的模塊引用 。 注 意 匯編器對段的處理 用于定義 段的匯編命令 .bss 未初始化段 .usect 未初始化自定義段 .text 已初始化程序正文段 .data 已初始化程序數(shù)據(jù)段 .sect 已初始化自定義段 如果匯編語言程序中一個(gè)段命令都沒有用,那么匯編器把程序中的內(nèi)容都匯編到 .text段。 程序員為自定義未初始化段起的名字 ( 3) 段程序計(jì)數(shù)器 ( SPC) 編址過程 表示一個(gè)程序代碼段或數(shù)據(jù)段內(nèi)的當(dāng)前地址 作用 一開始,匯編器將每個(gè) SPC置 0。如果再繼續(xù)對某個(gè)段匯編,則相應(yīng)的 SPC就在先前的數(shù)值上繼續(xù)增加。 當(dāng)匯編器遇到 .text, .data, .sect偽指令時(shí) , 匯編器停止將隨后的程序代碼或數(shù)據(jù)編譯進(jìn)當(dāng)前段 , 而是順序編譯進(jìn)遇到的段中 。 匯編程序?qū)υ闯绦騾R編時(shí) , 如果采用 l(小寫的 L)選項(xiàng) , 則匯編后將生成一個(gè)列表文件 。 列表文件中每行由四個(gè)區(qū)域組成 , 即 Field1:源程序的行號 。 Field3:目標(biāo)代碼 。 【 例 6】 段定義偽指令應(yīng)用舉例 。 22 ******************************************** 23 ** Another initialized table into .data. ** 24 ******************************************** 25 0004 .data 26 0004 00aa ivals .word 0AAH, 0BBB, 0CCH 0005 00bb 0006 00cc 27 ******************************************* 28 ** Define another section for more variables. ** 29 ******************************************* 30 0000 var2 . usect newvars, 1 31 0001 inbuf .usect newvars, 7 32 ******************************************** 33 ** Assemble more code into .text. ** 34 ******************************************** 35 0005 .text 36 0005 ll0a mpy: LD 0AH, B 37 0006 f166 mloop: MPY 0AH, B 0007 000a 38 0008 f868 BC mloop, BNOV 0009 000639。 ② .data:包含 7個(gè)字的數(shù)據(jù) 。 ④ .bss:為變量保留 10個(gè)字的存儲空間 。 本例的目標(biāo)代碼如圖 43所示 。110AF 1 6 6000AF 8 6 8000639。 ● 對各個(gè)符號和段進(jìn)行重新定位 , 并給它們指定一個(gè)最終的地址 。 根據(jù)鏈接命令或鏈接命令文件( .cmd文件),將一個(gè)或多個(gè) COFF目標(biāo)文件鏈接起來,生成存儲器映象文件( .map)和可執(zhí)行的輸出文件( .out)( COFF目標(biāo)模塊) 鏈接器的主要功能就是對程序定位 , 它采用的是一種相對的程序定位方式 。 運(yùn)行鏈接程序 ( 1) 鍵入命令 lnk500 ( 2) 鍵入命令 lnk500 –o ( 3) 鍵入命令 lnk500 鏈接器 是 名為 的可執(zhí)行程序 應(yīng)包含如下內(nèi)容: o 建立一個(gè)名為 (默認(rèn)情況)的可重新定位的輸出模塊。 其一 , 將輸入段組合生成輸出段 , 即將多個(gè) .obj文件中的同名段合并成一個(gè)輸出段;也可將不同名的段合并產(chǎn)生一個(gè)輸出段 。 鏈接器提供 MEMORY和 SECTIONS兩個(gè)命令來完成上述功能 。 鏈接器通過命令文件 ( .cmd)來獲得上述信息 。命令文件 .cmd由三部分組成:輸入 /輸出定義、 MEMORY命令和 SECTIONS命令。 MEMORY命令用來定義目標(biāo)系統(tǒng) 中所包含的各種形式的存儲器 的存儲器配置圖 , 包括對存儲器各部分命名 , 以及規(guī)定它們的起始地址和長度 。 頁號 n最多可規(guī)定為 255,取決于目標(biāo)存儲器的配置 。 如果沒有規(guī)定PAGE, 則鏈接器就目標(biāo)存儲器配置在 PAGE 0。名字并沒有特殊的含義 , 用來標(biāo)記存儲器的區(qū)間而已;名字都是內(nèi)部記號 , 不需要保留在輸出文件或者符號表中 。 MEMORY { PAGE 0: name 1 [( attr) ]: origin=constant, length=constant ┆ PAGE n: name n [( attr) ]: origin=constant, length=constant } MEMORY命令的一般句法 任選項(xiàng) , 為命名區(qū)規(guī)定1~ 4個(gè)屬性 。 當(dāng)輸出段定位到存儲器時(shí) ,可利用屬性加以限制 。 鍵入 origin、 或 o都可以 。 規(guī)定一個(gè)存儲區(qū)的長度,鍵入 length、 len或 l都可以。 W 規(guī)定可以對存儲器執(zhí)行寫操作 。 I 規(guī)定可以對存儲器進(jìn)行初始化 。 任何一個(gè)沒有規(guī)定屬性的存儲器都默認(rèn)有全部 4項(xiàng)屬性 。 這是 2個(gè)字節(jié)的整型常數(shù) , 可以是十進(jìn)制數(shù) 、八進(jìn)制數(shù)或十六進(jìn)制數(shù)表示 。 屬性選項(xiàng)一共有 4項(xiàng) 例 47 MEMORY命令的使用方法 。 名為 SCRATCH的數(shù)據(jù)存儲器: 32字 RAM, 起始地址 60h。 告訴鏈接器如何將輸入段合成輸出段 在可執(zhí)行程序中定義輸出段 規(guī)定輸出段在存儲器中的存放位置 允許重新命名輸出項(xiàng) 。 每一個(gè)輸出段的說明都從段名開始 。 注意 SECTIONS { name: [property,property,property,… ] name: [property,property,property,… ] name: [property,property,property,… ] } SECTIONS命令的一般句法 性能參數(shù) 1) load allocation 定義將輸出段加載到存儲器中 的什么位置 。 .text: load=0x1000 將輸出段 .text定位到一個(gè)特定地址 。 .bss: ( RW) 將 .bss段定位到屬性為 R、 W的存儲區(qū) 。 句法: run=allocation 或者用大于號代替等號 runallocation 鏈接器為每個(gè)輸出段在目標(biāo)存儲器中分配兩個(gè)地址:一個(gè)是加載的地址 , 另一個(gè)是執(zhí)行程序的地址 。 有時(shí)要想把程序的加載和運(yùn)行區(qū)分開 ( 先將程序加載到 ROM, 然后在 RAM中以較快的速度運(yùn)行 ) , 只要用 SECTIONS命令讓鏈接器對這個(gè)段定位兩次就行了 。 例如: .fir: load=ROM, run=RAM 3) Input sections 用來定義由哪些輸入段組 成輸出段 。 SECTIONS { .text: /* 建立 .text 輸出段 */ { ( .text) /* 鏈接源于 .text段 */ ( sec1) /*鏈接源于 sec1段 */ /*鏈接源于 */ ( .text,sec2) /*鏈接源于 .text 段和 sec2段 */ } } 用文件名和段名來明確地規(guī)定輸入段 如果沒有利用 MEMORY和 SECTIONS命令 , 鏈接器就按默認(rèn)算法來定位輸出段: MEMORY { PAGE 0: PROG: origin=0x0080, length=0xFF00 PAGE 1: DATA: origin=0x0080, length=0xFF80 } SECTIONS { .text: PAGE=0 .data: PAGE=0 .cinit: PAGE=0 .bss: PAGE=1 } (3) MEMORY和 SECTIONS命令的默認(rèn)算法 所有的 .text輸入段 , 鏈接成一個(gè) .text輸出段 , 它是可執(zhí)行的輸出文件; 所有的 .data輸入段組合成 .data輸出段 所有的 .bss輸入段則組合成一個(gè) .bss輸出段 .text和 .data段定位到配置為 PAGE 0上的存儲器 , 即程序存儲空間 。 o m e start MEMORY { PAGE 0: EPROM : =0E000H, len=100H PAGE 1: SPRAM : =0060H, len=20H DARAM : =0080H, len=100H } SECTIONS { .text : EPROM PAGE 0 .data : EPROM PAGE 0 .bss : SPRAM PAGE 1 STACK : DARAM PAGE 1 } 程序重定位 匯編器處理每個(gè)段都是從地址 0開始 , 每段中所有需要重新定位的符號 (標(biāo)號 )都是相對于 0地址而言的 。 ● 調(diào)整符號值 , 使之對應(yīng)于新的段地址 。 匯編器對源程序匯編時(shí) , 匯編后將生成一個(gè)列表文件 。 表示在鏈接時(shí)需要重新定位的符號如下: ! :定義的外部引用 。: .text段重新定位 。 +: .sect段重新定位 。 例 45 列表文件中 , 匯編器為需要重新定位的符號所留的重定位入口 。這里賦初值 假設(shè)鏈接時(shí) X重新定位在地址 7100h, .text段重新定位到從地址 7200h開始 , 那么 Y的重定位值為 7204h。 鏈接器在處理完之后就將重定位入口消去 , 以防止在重新鏈接或加載時(shí)再次重新定位 。 匯編程序舉例 1. 多模塊鏈接 以例 2中的 , 將復(fù)位與中斷在一起的向量文件列為一個(gè)單獨(dú)的文件 , 對兩個(gè)目標(biāo)文件進(jìn)行鏈接 。 【 例 20】 向量文件
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1