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

正文內(nèi)容

dsp匯編語(yǔ)言程序設(shè)計(jì)(參考版)

2025-01-15 18:06本頁(yè)面
  

【正文】 ************************************** * * * Reset vector * ************************************** .title ********** ResetVector ************ .ref start .sect .vectors 。 (1) 編寫向量文件 。 一個(gè)沒(méi)有重定位入口的文件稱為絕對(duì)文件,它的所有地址都是絕對(duì)地址。鏈接器利用兩個(gè)重定位入口 , 對(duì)目標(biāo)文件中的兩次引用進(jìn)行修正: f073 B Y 變成 f073 0004’ 7204 f020 LD X,A 變成 f020 0000! 7100 在 COFF目標(biāo)文件中有一張重定位入口表 。 1 0100 X .set 0100h ;給 X賦值 2 0000 .text 3 0000 FO73 B Y ;生成一個(gè)重定位入口 0000 0004’ 4 0002 F020 LD X,A ;生成一個(gè)重定位入口 0003 0000! 5 0004 F7E0 Y: RESET 在 .text段對(duì) X的引用是一次外部引用 .text段內(nèi)對(duì) Y的引用是一次內(nèi)部引用 .text段內(nèi) 定義 Y 另一個(gè)模塊中定義的 X。 : .bss和 .usect段重新定位 。 : .data段重新定位 。 39。 列表文件中目標(biāo)代碼后面在需要引用重新定位的符號(hào)處留了一個(gè)重新定位入口 , 鏈接器就在符號(hào)重定位時(shí) , 利用這些入口修正對(duì)符號(hào)的引用值 。 ● 調(diào)整對(duì)重新定位后符號(hào)的引用 。事實(shí)上 , 所有段都不可能從存儲(chǔ)器中的 0地址開始 , 因此鏈接器必須通過(guò)下列方法對(duì)各個(gè)段進(jìn)行重新定位: ● 將各個(gè)段定位到存儲(chǔ)器圖中 , 使每個(gè)段有合適的起始地址 。 【 例 8】 鏈接 。 句法: {input_sections} 大多數(shù)情況下 , 在 SECTIONS命令中是不列出每個(gè)輸入文件的輸入段的段名的: SECTIONS { .text: .data: .bss } 這樣 , 在鏈接時(shí) , 鏈接器就將所有輸入文件的 .text段鏈接成 .text輸出段 , 其它段也一樣 。一次是設(shè)置加載地址 , 另一次是設(shè)置運(yùn)行地址 。 通常 ,這兩個(gè)地址是相同的 , 可以認(rèn)為每個(gè)輸出段只有一個(gè)地址 。 2) Run allocation 用來(lái)定義輸出段在存儲(chǔ)器的 什么位置上開始運(yùn)行 。 .text: ROM 將輸出段 .text定位到名為 ROM的存儲(chǔ)區(qū) 。 句法: load=allocation 或 者 用 大 于 號(hào) 代 替“ load=” allocation 或者省掉 “ load=” allocation 其中 allocation是關(guān)于輸出段地址的說(shuō)明 , 即給輸出段分配存儲(chǔ)單元 。 段名后面是一行說(shuō)明段的內(nèi)容和如何給段分配存儲(chǔ)單元的性能參數(shù) 。 ( 2) SECTIONS命令 功 能 在鏈接器命令文件中 , SECTIONS命令用大寫字母 , 緊隨其后并用大括號(hào)括起來(lái)的是關(guān)于輸出段的詳細(xì)說(shuō)明 。 名為 ONCHIP的數(shù)據(jù)存儲(chǔ)器: 512字 RAM, 起始地址為 80h。 /* Example mand file with MEMORY directive */ /* Input files */ o /* Options */ MEMORY { PAGE0: ROM: origin=cooh, length=1000h PAGE1: SCRTCH: origin=60h, length=20h ONCHIP: origin=80h, length=200h } 名為 ROM的 程序存儲(chǔ)器: 4K字 ROM,起始地址 C00h。 如 fill=0FFFFh。 fill:任選項(xiàng) , 不常用 , 在句法中未列出 , 為沒(méi)有定位輸出段的存儲(chǔ)器空單元填充一個(gè)數(shù) , 鍵入 fill或 f均可 。 如果一項(xiàng)屬性都沒(méi)有選 , 就可以將輸出段不受限制地定位到任何一個(gè)存儲(chǔ)器位置 。 X 規(guī)定存儲(chǔ)器可以裝入可執(zhí)行的程序代碼 。 R 規(guī)定可以對(duì)存儲(chǔ)器執(zhí)行讀操作 。 這個(gè)值是一個(gè) 16位二進(jìn)制常數(shù) , 可以用十進(jìn)制數(shù) 、 八進(jìn)制數(shù)或十六進(jìn)制數(shù)表示 。 規(guī)定一個(gè)存儲(chǔ)區(qū)的起始地址 。 如果有選項(xiàng) ,應(yīng)寫在括號(hào)內(nèi) 。 不同 PAGE上的存儲(chǔ)器區(qū)間可以取相同的名字 , 但在同一 PAGE內(nèi)的名字不能相同 , 且不許重疊配置 。 MEMORY { PAGE 0: name 1 [( attr) ]: origin=constant, length=constant ┆ PAGE n: name n [( attr) ]: origin=constant, length=constant } MEMORY命令的一般句法 名字可以包含 8個(gè)字符 , A~ Z、 a~ z、 $、 .、 _均可 。 通常 PAGE 0定為程序存儲(chǔ)器 , PAGE 1定為數(shù)據(jù)存儲(chǔ)器 。 ( 1) MEMORY命令 功 能 MEMORY { PAGE 0: name 1 [( attr) ]: origin=constant, length=constant ┆ PAGE n: name n [( attr) ]: origin=constant, length=constant } MEMORY命令的一般句法 對(duì)一個(gè)存儲(chǔ)空間加以標(biāo)記 , 每一個(gè) PAGE代表一個(gè)完全獨(dú)立的地址空間 。輸入 /輸出定義這部分包括輸入文件名 (目標(biāo)文件 .obj、庫(kù)文件 .lib和交叉索引文件 .map)、輸出文件 .out和鏈接器選項(xiàng)。 鏈接器將輸入段組合成一個(gè)可執(zhí)行的目標(biāo)模塊 鏈接器命令文件 鏈接命令文件含有鏈接時(shí)所需要的信息。 MEMORY命令用于描述系統(tǒng)實(shí)際的硬件資源;SECTIONS命令用于描述段如何定位到恰當(dāng)?shù)挠布Y源上 。 其二 , 將輸出段定位到實(shí)際的存儲(chǔ)空間中 。 鏈接器對(duì)段的處理 鏈接器對(duì)段的處理具有兩個(gè)功能 。 程序的定位方式有三種: ① 編譯時(shí)定位( MCU采用,用 ORG語(yǔ)句確定代碼塊和數(shù)據(jù)塊的絕對(duì)地址); ② 鏈接時(shí)定位( DSP采用,按 .cmd文件中的段命令進(jìn)行實(shí)際的定位); ③ 加載時(shí)定位( PC機(jī)采用,由操作系統(tǒng)對(duì)程序進(jìn)行定位) 。 ● 解決輸入文件之間未定義的外部引用問(wèn)題 。19L i n e N u m b e r s202021363737383821S e c t i o n. t e x t00110022003301230 0 A A0 0 B B0 0 C C66614262626. d a t a001100334344v e c t o r sN o d a t a1 0 w o r d sr e s e r v e dN o d a t a8 t w o r d sr e s e r v e d103031. b s sn e w v a r s 鏈 接 器 鏈接器的功能如下: ● 將各個(gè)段配置到目標(biāo)系統(tǒng)的存儲(chǔ)器中 。 圖 43 目標(biāo)代碼 100FF 0 1 00001O b j e c t C o d eF 8 4 2000139。 ⑤ newvars:由 .usect偽指令產(chǎn)生的自定義段 , 為變量保留 8個(gè)字的存儲(chǔ)空間 。 ③ vectors:由 .sect偽指令產(chǎn)生的自定義段 , 包含 2個(gè)字的初始化數(shù)據(jù) 。 39 ****************************************** 40 ** Define a named section for int. vectors. ** 41 ****************************************** 42 0000 .sect vectors 43 0000 0011 .word 011H, 033H 44 0001 0033 此例共生成五個(gè)段: ① .text:包含 10個(gè)字的目標(biāo)代碼 。 2 ***************************************** 3 ** Assemble an initialized table into .data. ** 4 ********************************************** 5 0000 .data 6 0000 0011 011H, 022H, 033H 0001 0022 0002 0033 7 ****************************************** 8 ** Reserve space in .bss for a variable. ** 9 ****************************************** 10 0000 .bss buffer, 10 11 ******************************************** 12 ** Still in .data. ** 13 ******************************************** 14 0003 0123 ptr .word 0123H 15 ******************************************** 16 ** Assemble code into the .text section. ** 17 ******************************************** 18 0000 .text 19 0000 100F add: LD 0FH, A 20 0001 F010 aloop: SUB 1, A 0002 0001 21 0003 F842 BC aloop, AGEQ 0004 000139。 Field4:源程序 。 Field2:段程序計(jì)數(shù)器 SPC。 下面給出了一個(gè)列表文件的例子 , 用來(lái)說(shuō)明在匯編過(guò)程中段偽指令在不同的段之間來(lái)回交換 , 逐步建立 COFF段的過(guò)程和 SPC的修改過(guò)程 。 當(dāng)匯編器遇到 .bss, .usect偽指令時(shí) , 匯編器暫時(shí)脫離當(dāng)前段 , 隨后的程序代碼或數(shù)據(jù)仍將順序編譯進(jìn)當(dāng)前段 。鏈接器在鏈接時(shí)要對(duì)每個(gè)段進(jìn)行重新定位。當(dāng)匯編器將程序代碼或數(shù)據(jù)加到一個(gè)段內(nèi)時(shí),相應(yīng)的 SPC就增加。 注意 ( 1) 未初始化段 未初始化段由 .bss和 .usect命令建立 位置 為變量 保留存儲(chǔ)器空間 作用 通常將它們
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1