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

正文內(nèi)容

第3章程序設(shè)計(jì)基礎(chǔ)(編輯修改稿)

2025-08-16 11:01 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 。 .interp : { *(.interp) } :text :interp .text : { *(.text) } :text .rodata : { *(.rodata) } /* defaults to :text */ ... . = . + 0x1000。 /* move to a new page in memory */ .data : { *(.data) } :data .dynamic : { *(.dynamic) } :data :dynamic ... } 在上面的例子中,定義了 5個(gè)段: ? headers申明一個(gè)程序頭段; ? interp申明一個(gè)段,段中包含了程序解釋器的名字; ? text申明一個(gè)可被下載的段,并且包含了文件的頭信息和各段的信息; ? data申明一個(gè)可被下載的段; ? dynamic申明一個(gè)包含動(dòng)態(tài)鏈接信息的段; 在 SECTIONS中可以看到,有的分段同時(shí)屬于兩個(gè)段,實(shí)質(zhì)上是這兩個(gè)段占用同一空間。 .rodata也屬于 .text段是由于它的上一個(gè)分段屬于 .text段,而 .rodata又沒有指明歸屬段。 注意:如果沒有特殊要求,建議用戶不要自己寫程序頭。 ( 6)對(duì)內(nèi)存布局的說(shuō)明 armelfld的默認(rèn)配置允許將輸出程序定位到任何可用內(nèi)存。 用戶也可以用 MEMORY命令對(duì)內(nèi)存進(jìn)行配置。 MEMORY命令可以定義目標(biāo)機(jī)內(nèi)存段的位置和大小,當(dāng)裝載的程序塊大小超出指定的內(nèi)存段大小時(shí), armelfld會(huì)提示出錯(cuò),而不會(huì)自動(dòng)尋找可用的內(nèi)存段,這樣可以避免內(nèi)存分配錯(cuò)誤。 定義內(nèi)存段的方式: MEMORY { name (attr) :ORIGIN = origin, LENGTH = len … } ?name表示內(nèi)存段的名字,可以使用任何變量名,但是不能和已有變量名、文件名和分段名( section name)沖突。 ?attr沒有實(shí)際的用途,可省略。 ?origin(可簡(jiǎn)寫為: 或者 o)表示內(nèi)存段的起始位置。 ?Length(可簡(jiǎn)寫為 :len或者 l)表示內(nèi)存段的長(zhǎng)度 . MEMORY { rom : ORIGIN = 0x3f80000, LENGTH = 512K ram : = 0, l = 1M } 表示定義了兩個(gè)內(nèi)存段: ?rom內(nèi)存段,起始地址為 0x3f80000,長(zhǎng)度為 512K; ?ram內(nèi)存段,起始地址為 0,長(zhǎng)度為 1M。 ( 7)對(duì)分段的說(shuō)明 SECTIONS命令控制如何正確地 將輸入分段定位到輸出分段 ,包括在輸出文件中的順序 ,和輸入分段在輸出分段中的定位。 如果不用 SECTIONS命令, armelfld將對(duì)每個(gè)輸入分段生成相同名字的輸出分段,分段的順序由輸入文件中遇到的分段的先后順序決定。 SECTIONS命令的格式: SECTIONS{ ... seame start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } region :phdr =fill ... } 其中 seame和 contents都是必須有的。seame表示輸出分段的名字,受輸出格式的限制,一些輸出格式對(duì)段名有限制, 例如 .text,.data或 .bss的分段名存在 . 另外 armelfld不輸出空的分段。 start, BLOCK( align) ,( NOLOAD) ,AT( ldadr) , region, :phdr, =fill都是可選項(xiàng): Start 表示分段的起始地址 ,該地址被稱為重定位地址 。 BLOCK( align) 表示分段以 align對(duì)齊; ( NOLOAD) 表示該段不能被裝載; AT (ldadr) 表示該分段裝入的起始地址為 ldadr,當(dāng)沒有該參數(shù)時(shí)分段的裝入地址和重定位地址相同; ? region 表示該分段地址空間在region所定義的范圍內(nèi) ,region就是在MEMORY命令中定義的內(nèi)存段名字; ? :phdr 表示該分段的裝載地址空間在phdr定義的范圍內(nèi), phdr就是在程序頭中定義的段名字; ? =fill 表示在該分段的空間空隙的填充值。 contents表示具體的分段內(nèi)容,主要描述該輸出分段中包含有輸入文件中的哪些分段。 常見的分段名如下: ? .text ——表示代碼段 ? .data ——初始化了的數(shù)據(jù)段 ? .bss ——未初始化的數(shù)據(jù)段 ? .rodata ——不可寫的數(shù)據(jù)段 ? COMMON ——未初始化的數(shù)據(jù)段 用戶在匯編語(yǔ)言程序中可以自定義分段名,如: mycode、 mydata之類。 在 C語(yǔ)言文件編譯成目標(biāo)文件后 ,通常包含有 .text、 .data、 COMMON、 .rodata段。 其中 .rodata表示不可寫的數(shù)據(jù)段,通常包含在 C語(yǔ)言程序中定義的一些常量,如 const char version_string[ ]=―Lambda x86/fpm‖之類。 contents可用格式: ?filename ?filename( section) ?filename( section, section, … ) ?filename( section section … ) 和針對(duì)所有文件的: ?*( section) ?*( section, section, … ) ?*( section section … ) 如果在用“ *”指定所有文件時(shí),以前已經(jīng)使用 filename指定過一些文件,那么“ *”表示剩下的文件: filename( COMMON) *( COMMON) 指定輸入文件中名為 COMMON的分段里未初始化的數(shù)據(jù)在輸出分段中的位置。 下面舉例說(shuō)明 contents中的具體內(nèi)容及編寫方法。 下面舉例說(shuō)明 contents中的具體內(nèi)容及編寫方法。 例如: .text 0 : { } 表示將 、 、 都放在輸出文件的 .text段中。 例如: .text 0 : { *(.text)。 } 表示將所有輸入文件中的 .text分段都放在輸出文件的 .text段中。 例如: .text 0 : { (.text)。 (.text)。 (.text)。 } 表示將 、 、 .text段都放在輸出文件的 .text段中。 例如: text1 : { (.text)。 } text2 : { *(.text)。 } 表示將 .text段放在輸出文件的 text1段中,而其他輸入文件的 .text段都放在輸出文件的 text2段。 ( 8)注釋 armelfld語(yǔ)言中的注釋和 C語(yǔ)言一樣。 例如: /* ments */ 工程管理器 MAKE 概述 make是用于自動(dòng)編譯、鏈接程序的實(shí)用工具。 使用 make后就不需要手工編譯每個(gè)程序文件 。 要使用 make,首先要編寫 makefile ,makefile描述程序文件之間的依賴關(guān)系以及提供更新文件的命令。 典型地,在一個(gè)程序中,可執(zhí)行文件依賴于目標(biāo)文件,而目標(biāo)文件依賴于源文件。 如果 makefile文件存在,每次修改完源程序后,用戶通常所需要做的事情就是在命令行敲入“ make‖,然后所有的事情都由make來(lái)完成。 1.命令格式 make [f makefile] [option] [target]… ? make命令后跟 f選項(xiàng),指定 makefile的名字為 makefile; ? option表示 make的一些選項(xiàng) ? ; target是 make指定的目標(biāo),在 細(xì)說(shuō)明。 例如 :makefile的名字是 my_hello_make: make –f my_hello_make 2.命令選項(xiàng)列表 ? f 指定 makefile ? e 使環(huán)境變量?jī)?yōu)先于 makefile的變量 ? I dir 設(shè)定搜索目錄 ? i 忽略 make過程中所有錯(cuò)誤 ? n 只顯示執(zhí)行過程,而不真正執(zhí)行 ? r 使隱含規(guī)則無(wú)效 ? w 顯示工作目錄 ? C dir 讀取 makefile設(shè)置的工作目錄 ? s 不顯示執(zhí)行的命令 命令使用 makefile文件用來(lái)告訴 make需要做的事情,通常指怎樣編譯、怎樣鏈接一個(gè)程序。 以 C語(yǔ)言程序?yàn)槔?: ? 在用 make重新編譯的時(shí)候,如果一個(gè)頭文件已被修改,則包含這個(gè)頭文件的所有 C源代碼文件都必須被重新編譯。 ? 而每個(gè)目標(biāo)文件都與 C的源代碼文件有關(guān),如果有源代碼文件被修改過,則所有目標(biāo)文件都必須被重新鏈接生成最后的結(jié)果。 編寫一個(gè) makefile將在 。 1.指定 makefile f makefile ? 用該選項(xiàng)指定 makefile的名字為makefile。 ? 如果 make中多次使用 f指定多個(gè)makefile,則所有 makefile將鏈接起來(lái)作為最后的 makefile。 ? 如果不指定 makefile, make默認(rèn)的makefile依次為“ makefile‖、“ Makefile‖。 例如: make –f my_hello_make 2.使環(huán)境變量?jī)?yōu)先于 makefile文件中的變量 e 使環(huán)境變量?jī)?yōu)先于 makefile文件中的變量。 例如: make –e 3.指定包含文件的搜索路徑 I dir ? 指定在解析 makefile文件中的 .include時(shí)的搜索路徑為 dir。 ? 如果有多個(gè)路徑,將按輸入順序依次查找。 例如: make –I/include/mk 4.忽略錯(cuò)誤 i 忽略 make執(zhí)行過程中的所有錯(cuò)誤。 例如: make –i 5.顯示命令的執(zhí)行過程 n 只顯示命令的執(zhí)行過程而不真正執(zhí)行。 例如: make –n 6.使隱含規(guī)則無(wú)效 r 使 make的隱含規(guī)則無(wú)效,清除后綴名規(guī)則中默認(rèn)的后綴清單。 例如: make –r 7.顯示執(zhí)行過程中的工作目錄 w 顯示 make執(zhí)行過程中的工作目錄。 例如: make –w 8.讀取 makefile文件前設(shè)置工作目錄 C dir ? 在讀取 makefile文件以前將工作目錄改變?yōu)?dir,完成 make后改回原來(lái)的目錄。 ? 如果在一次 make中使用多個(gè) C選項(xiàng),每個(gè)選項(xiàng)都和前面一個(gè)有關(guān)系。 ? “ C dir0 / C dir1 ‖與“ C dir0 / dir1‖等價(jià) . 例如: make –C bsp 9.不顯示所執(zhí)行的命令 s 運(yùn)行 make時(shí)用選項(xiàng) s可以不顯示執(zhí)行的命令,只顯示生成的結(jié)果文件。 例如: make –s 編寫一個(gè) makefile 1. makefile的結(jié)構(gòu) makefile文件包含: ? 顯式規(guī)則 ? 隱含規(guī)則 ? 變量定義 ? 指令 ? 注釋 2. 編寫 makefile中的規(guī)則 makefile中規(guī)則的格式如下: targets : dependencies mand … 或者 targets : dependencies ; mand mand … ? targets 指定目標(biāo)名,通常是一個(gè)程序產(chǎn)生的目標(biāo)文件名,也可能是執(zhí)行一個(gè)動(dòng)作的名字,名字之間用空格隔開。 ? dependency 描述產(chǎn)生 target所需的文件,一個(gè) target通常依賴于多個(gè) dependency。 ? mand 用于指定該規(guī)則的命令。 注意: mand必須以 TAB鍵開頭。如果某一行過長(zhǎng)可以分作兩行,用‘ \‘連接。 例如: smcinit: armelfar –ruvs –o : armelfgcc –c –o : armelfgcc –c –o clean: rm *.o ? 表示目標(biāo)名的有 smcinit、 、 。smcinit依賴于 ,而 , . ? 各目標(biāo)分別由命令 armelfar –ruvs –o ; armelfgcc –c –o ;armelfgcc –c –o 。 ? clean為一動(dòng)作名,刪除所有后綴為 .o的文件。 3.
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1