




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、哈爾濱工程人學碩士學位論文c2vhdl編譯中的指針映射方法研究 姓名:楊杰申請學位級別:碩士專業(yè):計算機應(yīng)用技術(shù)指導教師:顧國昌201103換程度將決定編譯器的性能及/、v:用范陽。編譯指針的符兮解析原理,木文提出了克接硬件映射變s指針和數(shù)組指針的方法。該方 法主要采川基于cc的流敏感上不文敏感指針分析方法,為指針指向0標編碼以及構(gòu) 迷抽象符兮表,盡可能減少不可達電路的產(chǎn)生;然后采用一次訪存方式,移交控制權(quán)限, 構(gòu)建指針訪存通路,生成指針訪存控制信兮,避免了多級指針的多次訪存,在一定程度 上提卨了指針的硬件訪存效率;最后進行存儲空間布局,沒計地址生成器,為指針訪存 捉供地址流信息。實驗結(jié)果表明
2、,本文提出的研究方法討以正確地轉(zhuǎn)換變景指針和數(shù)組 指針,具冇較好的可行性與可擴展性。與其他只支持數(shù)組指針的可重構(gòu)編譯器相比,木 文在硬件資源占用情況以及稈序運行速度兩方面都能夠達到相同的硬件效果。關(guān)鍵詞:cccc;指針分析;抽象符兮表;指針控制;一次訪存ccc編譯屮的指針映射方法研究ccccccccccccccc媧cccc ccccc飯cccccccccccccccccccccccg甌ccccccccc cc cccccc ccccc ccccccccccccccccccccccccccccccccc. cccccccccccccccccccccc, cccccccccccccc堺cccccc
3、cccccccccccc 甌 ccccccccccccccccc ccccccccccccccccccccccccc cccc cccc ccccccccccc: cccccccccc機ccccccc籥 ccc00000應(yīng)用稈序采用并行的空間模型進行設(shè)計,具冇很高的并行性,這使得該沒計模型在程序加速應(yīng)用領(lǐng)域越來越受到人們的廣泛關(guān)注。可重構(gòu)浞合計算系執(zhí)行,其余部分繼續(xù)山0u涸稹q芯勘礱鰨(i庵只u誑芍毓辜際醯塍u.叫異構(gòu)|辦處理器系統(tǒng)在流媒體、0ga蝸返攘焴蚨蘊岣叱絳蛟誦興俁紉訝味訟災(zāi)06g0, 0。0u uuuuuououuuuuu設(shè)計的標準語言。而向00的應(yīng)用開發(fā)表明,舶在00上的應(yīng)用非常廣
4、泛,然而陣乘法、濾波、邊緣檢測等成用兌法中頻繁利用指針遍歷數(shù)組。綜上所述,000編譯中對指針,尤其是對數(shù)組指針和變fi指針的支持非常關(guān)鍵,其有重要的實際意義與應(yīng)用價值。mil編譯屮是否支持指針及支持的程度將影響 ogg編譯工a在可重構(gòu)領(lǐng)域的應(yīng)用范圍。00國內(nèi)外研究現(xiàn)狀具正逐步成為可重構(gòu)領(lǐng)域的重耍研究課題。目前wrt外的打多大孚對該研究課題展開了 廣泛深入的研究,并取得了一些吋喜的研究成果,如0000q編譯器、00加編譯 器、qqqqq編譯器、qqqqq編譯器、qqqq編譯器、000q嘁肫鰲00射的支持度還非常溥弱,相關(guān)的理論研究工作較少。0q0怯捎攔0乂荽符a撲慊0蒲0牘二炭芍毓故笛槭wmq加
5、教授項h組 oasog晃猇00絳頡000編譯器的輸入程序中nj'以存在數(shù)組指針,但是數(shù)組指針只能采用下標方式訪問數(shù)纟ii.,且不允許進行指針運算。研究表明,如果指針以下標供對變景指針、指針運算等指針及其相關(guān)操作的鳊譯支持。如oa加淌諤岢齙脈qqo編譯器,該編譯器能夠?qū)⒅匾?高級語言0鏑語言q成淶矯嫦職00撓布0低場5獏q00也不能支持變量指針、數(shù)組指針等任何形式的指針變景。00由美國伊利諾伊州西北大學并行于分布式計算電了中心與計算機工程技術(shù)研 究院開發(fā)的-款000編譯器。(w以00架構(gòu)作為編譯架構(gòu),只能支持靜態(tài)數(shù)組。0鰍由代爾夫特理工大學的計算機工程實驗室提出,實現(xiàn)了 指針的000轉(zhuǎn)
6、換。00000虺艘0q約瘰0在一定程度上支持乜括數(shù)組指針在內(nèi)的部分或全部指針的000轉(zhuǎn)換。加芄淮0沓踔滴0,步進用計數(shù)類循環(huán)在靜態(tài)分析時匕知的循環(huán)層數(shù)以及各層循環(huán)次數(shù)獲取數(shù)組指針指向的數(shù)較多指針類型,佾軟硬件通倍開銷人h.存儲器管理復(fù)雜:軟硬件共享存儲器,硬件只加 速核心運算,運算所需數(shù)椐需通過總線從共享存儲器屮獲得;每次運算結(jié)來后都需再次 將數(shù)據(jù)寫問共亨存儲器。0葜剛敫0碌姆io跫00捎flflo加分支語句將指針解d寫數(shù)據(jù)時只需一次訪存的特點。結(jié)合編譯原ffl勾體系結(jié)構(gòu)ffl論,根據(jù)本文提出的直接硬針分析的f1的在丁為生成指針訪存控制倍提供輔助信息。感分析,分析精度高于0000算法但效率更低
7、。如算法是一種流敏感和上下文不敏法,為相同函數(shù)的不同調(diào)動點復(fù)制調(diào)用路徑,存儲丌銷及計算:fi較大。算法進行分析時采用別名對方式,尤形屮增加了大量的冗余信息,即使采用了工作表技的方式也在無形中増加了函數(shù)調(diào)川關(guān)系節(jié)點,堉人了計算s、提髙了存儲空間耍求。因 此上述指針分析算法不適合木文用于進行面14硬件的指針分析。s次化桁針分析算法。該算法的分析過程主要分為0叮利用典型的流不敏感分析敏感分析結(jié)來都冇較人的粘度提島。q00等提出了分而治之的流敏感.h下文敏感分析 算法樞架閉,酋先利川流不敏感分析算法將指針分級,然后分別對各級指針進行流敏感 上下文敏感分析。張明軍采用動態(tài)求解集合約朿關(guān)系的方法改進了00
8、0q算法,提出丫基于限制ooaaoo. oao的流不敏感上下義敏感分析算法如。王甜甜等面向程序 標準化轉(zhuǎn)換應(yīng)用提出了基于控制依賴樹的指針分析算法網(wǎng)。終上所述,指針分析技術(shù)研 究工作均取得了不同稈度的成果,為后續(xù)研究工作貲定了基礎(chǔ)。oqquuuqqqqqq ij剖0蔡魍0進行指針分析提供了較好的分析思路。為了 達到更好的指針硬件映射效果,木文血昀指針的0000動映射提出了基于00的000000髏舾猩舷攣拿舾0算法。提取指針倍息足實現(xiàn)指針硬件映射的重耍準備工作,只冇確記了指針指向m標的維內(nèi)吋,利用公式0叫范廠鹵阨oil將其還原為叫叫形式。指針還原技術(shù)需要分析循環(huán)關(guān)鍵變量和指針變量的變化規(guī)律以確定數(shù)
9、組索引。h前較主流的技術(shù)是利用符號分析技術(shù)lj緋橄蠼饈停tkj徘u值u獲収循環(huán)關(guān)鍵變量的解 析解00。解析解是指給出解的具體函數(shù)形式,從解的函數(shù)表達式屮計算出可能的函數(shù)似。 然而,當對循環(huán)關(guān)鍵變量或指針變量進行條件更新時,符玎分析技術(shù)不能獲得解析解,圖uuuu校u錁氾uuuuuu等效于(juuuuuuuuuuu】 uuoffio. uu針的使川方式,通用性較差。哈爾濱-逝大學碩十學位論文本文主耍采川分析數(shù)據(jù)聲明時倍息與使川吋倍息相結(jié)合的方式提取指針倍息,降低 變景指針和數(shù)組指針的使用限制,提卨通用性。木課題®于土!架構(gòu)對譯中指針的映射方法進行了重點研究。課題主 要工作如下:編譯屮指針
10、映射方法。針指14 h標編碼技術(shù),提出并實現(xiàn)了基于過旨針分析算法。立了變量指針及數(shù)組指針硬件映射的整套模型。本論文的組織結(jié)構(gòu)如卜、以及指針硬件映射相關(guān)技術(shù)的國內(nèi)外研究現(xiàn)狀:fi后給出了本課題的主要工作。第規(guī)杭蛞s檣芟絲芍毓夠旌霞撲閬低場土巳此掛約癆重構(gòu)編譯器;分析了桁針訪問數(shù)據(jù)的編譯原理,為指針硬件映射提供了相關(guān)理論依據(jù);最后根據(jù)指針 訪問數(shù)據(jù)的符號解析原理,提fli了指針硬件s接映射方法。針分析粕度要求,粘度越髙硬件資源耗費越少;提出并實現(xiàn)了以基本塊為分析粒度,基 于土降滕針分析算法。映射模型結(jié)構(gòu),主要包拈指針控制、地址生成以及存儲結(jié)構(gòu)組織三部分;同時m于面h'd最后,總結(jié)本論文的工
11、作。00面向00的可重構(gòu)混合計算系統(tǒng)早在o世紀o年代,000改的面h全非,程序開發(fā)人員相當于重新學d種新的語言。映射結(jié)構(gòu)的粗粒度加速模型,采川已奮的u核開發(fā)標準功能應(yīng)川的方法,如基于tju適合應(yīng)川在高性能計算系統(tǒng)中,也足當前工業(yè)界研發(fā)的一個重要方向【0】。2222是由美國伊利諾斯人學開發(fā)的一個開源項r。從木質(zhì)上說,22不是一個編譯器,而是一個編譯器的架構(gòu)。22實際上類似于實現(xiàn)r一個庫,在此基礎(chǔ)上可以較為容易地實現(xiàn)各種不冋的編譯相關(guān)的程序。本文 葫于22進行222編譯中的指針映射方法研究??芍卮K,可幫助幵發(fā)者減少開發(fā)新編譯器的時間及工作量,提髙開發(fā)效率。r前, 22版木在不斷地升級,敁新版本
12、已經(jīng)發(fā)行至22,新版中不斷地加入了新a容,使 得其功能更加強人,為開發(fā)者提供了更好的幫助。22中間代碼采川類似于222222什打控制跳轉(zhuǎn)指令、各種運算指令和訪存指令等,并且擁yf獨立于尚級程序語言和0標 機器架構(gòu)的語法,易于優(yōu)化和分析代碼。2主要山三部分構(gòu)成:虛擬指令集、中間代碼商層結(jié)構(gòu)以及類型系統(tǒng)。虛擬指令集山單指令和rt函數(shù)兩部分組成。單指令完成單一功能;內(nèi)函數(shù)山一條或者多條單 指令組成,以函數(shù)的形式存在,只有在編譯吋才被翻譯成相應(yīng)的指令。單指令包含以下 幾類:終結(jié)指令2嫜2痳22t閌踉慫闃噶2如22癢2 / 22痙226嘸2慫闃噶2如每一個222由輸入程序經(jīng)22. 22嘁牒蟛222222
13、梢桓齷蚨喔鯢2222函2222山蚋數(shù)名、參數(shù)列表、返回類型以及一個或多個2222222究2構(gòu)成的 函數(shù)體組成,a定義函數(shù)在記義時需使川關(guān)鍵字9222 ”,而調(diào)川庫函數(shù)吋則需使川關(guān)個22222山一條成者多條2222222噶2組成。單指令中,終結(jié)指令是指拇個 22222的最后一條指令,該條指令作為纟控制流指令",決定了當前22222執(zhí)行結(jié)束后將跳轉(zhuǎn)入的2222222籩22癢22訪存指令用于談寫存儲器;22指令主要序決定。內(nèi)函數(shù)包含了可變參數(shù)處理內(nèi)函數(shù)、粘確垃圾冋收rt函數(shù)、代碼生成內(nèi)函數(shù)、叫taj兩部分構(gòu)成。原子類型是叫類型系統(tǒng)的基礎(chǔ)類型,如叫類型、 整型、浮點型等。衍生類型包括數(shù)組類型
14、000000°剛肜噌0叫0000、|hj-sm工具集g 塾 ggomouut具問的相互關(guān)系uotniou漢笞何i山、.吡蕤g的程序經(jīng)叫叫或ooou編譯后,牛成二u叫0產(chǎn)0河雔叫甦0相反,00. i將可讀的中間代碼匯編力0. 0文件;前者以路徑作為信息采樣a標,后者以基本模塊作為采樣h標;類似于oa糖0和加加0和000籰00q0 / qoqo分別用于編譯和鏈接階 段的優(yōu)化器。工具00煞笑閿沒s嘁胱p弧&嘔a産a募000用于加載庫文件,例如 加載用戶以及00自帶的優(yōu)化00。00從作用域上可分為oooqg、qqqqqq, o叩qoqq, qqoq等;從功能上分為ooaa00。常川的
15、00|4帶優(yōu)化00包括00000001氛箍0、一000000器,oa芄輝誦卸卯菩問降臍oa屑浯a耄o紓簡o運行結(jié)構(gòu),這與oo誦懈嘸隊镅猿絳虻慕峁o嗤00q是一種反編譯工具,它根椐用戶 需求將oafi浯o敕幢嘁氚芍付ci哪勘甏o搿oootmoo産o硎窘趴o. 0:q. 0表示將0俊荊産0幢嘁胛狢代碼;aoo上可執(zhí)行的的編譯流程由高級語言前端、中間代碼優(yōu)化器、后端代碼牛成器三部分構(gòu)成, 如圖00所示。屮間代碼優(yōu)化器間qq00編譯流程圖高級語言前端將高級語言程序o鏑、ooqooo編譯轉(zhuǎn)換到00中間代碼。屮間代碼優(yōu)化器負責優(yōu)化00屮間代碼,該優(yōu)化器以00虛擬指令集基礎(chǔ),并且 獨立于編譯前端和編譯后端。
16、00為二次開發(fā)過程提供了人景的集成庫,可以完成許多功能00h緱枋齔絳蚰?欏i0060究煲約爸喝蜿對槌芍屑浯0胂喙r畔cj睦啵堺000 信息分析提取,數(shù)據(jù)流與控制流分析,參數(shù)炎型轉(zhuǎn)換,代碼調(diào)試,程序性能評估以及循環(huán)展開、死代碼消除、公井了表達式捉取等各種00優(yōu)化。開發(fā)者對添加自己的00功能。本文在開發(fā)過程中添加了ooogu胖孛00、uuuuu?椴鴟u等叫。p端代碼生成器根據(jù)指定的n標處理器類型將優(yōu)化p的中間代碼轉(zhuǎn)換為相應(yīng)的機 器代碼。后端代碼生成器主要山指令選擇、遍前調(diào)度、寄存器分配、后期機器代碼優(yōu)化 和代碼輸出五大部分構(gòu)成。指令選擇的任務(wù)在于將后端代碼生成器的輸入代碼翻譯成目標處理器的特定機器
17、 指令,此過稈屮還可進行進一步的優(yōu)化工作。遍前調(diào)度,依據(jù)目標處理器指令執(zhí)行時所 占川的資源情況對程序指令序列進行重新排列。寄存器分配,00中間代碼屮使川虛 擬寄存器時假沒其資源尤限,所以映射時超過目標處理器的寄存器數(shù)目的那部分虛擬寄 存器將被映射為存資源。后期代碼優(yōu)化,主耍是指代碼長度優(yōu)化、指令級并行優(yōu)化等 一系列優(yōu)化工作。代碼輸出,根據(jù)耍求輸出指定格式的目標處理器代碼,如?1:編代碼、可執(zhí)行文件等。木文利用叫進行二次開發(fā)時,采用0u00操作00中間代碼,將指定程序的自動生成,同時屮成了軟硬件通信接口程序,最終產(chǎn)屮了可以協(xié)工作的硬件程序q鱗0功能模塊所示0w罟?,r000模塊添加z通倍總線的聲明
18、、調(diào)川等輔助倍oofi貴布q0蔥諧絳蟶0桑褐鞒絳駙文件和0涌諼募0綦0提供的交差編比特文件。難0前,為了驗證ooo惱o沸裕鋮oa在如0ooooo為主處理器的加快速驗證乎臺,在實際應(yīng)用中該驗證t臺可以方便的切比特文件和可執(zhí)行文件最終下載到快速驗證平臺上進行驗證并反饋相應(yīng)的信息,以便軟/硬件劃分啟動新的編評過程00指針訪問數(shù)據(jù)的編譯原理指針可以通過內(nèi)存地址直接訪問數(shù)據(jù),其本身被存放在棧區(qū),是-種運行吋分配空 間的變量。當利川指針訪問各炎數(shù)裾時,其本身的地址不會被改變,改變的是其存放的 內(nèi)容,也就足指向h標的地址。利川指針訪問數(shù)據(jù)時,首先對指針進行符號解析得到其 存放的a容,根據(jù)該內(nèi)容找到指記的內(nèi)存
19、空w,最后從內(nèi)存中取出數(shù)據(jù),指針訪存結(jié)來。運行時內(nèi)存劃分符兮表是編譯器屮的主要繼承屈性,用于記錄源程序屮和編譯過程屮產(chǎn)生的信息, 并且在編譯過程屮一旦發(fā)現(xiàn)新名字或齊己冇名字的偯息都耍查填符兮表。符兮表在編譯 過稈屮占冇非常重要的地位,它在編譯的不同階段都會被用到。例如,在詞法分析階段 幫助形成二元式;在語法語義分析階段幫助進行語義分析和產(chǎn)生屮間代碼;在代碼優(yōu)化 階段也耍借助于符兮表進行代碼優(yōu)化;簸后在目標代碼生成階段依據(jù)符兮表進行地址分配。眾所周知,在程序執(zhí)行過稈屮,稈序屮數(shù)據(jù)的存取都是通過與之對應(yīng)的存儲單元進通過符號表為所宥非靜態(tài)變量分配存儲空間。在編譯期間,拇進入一s過程,都要為該 層過程
20、中說明的標識符在符號表屮建立一張子符兮表,退出此過程時,則要刪除相應(yīng)的出一個過程吋,m程序入口函數(shù)訓的1/?«浙。如圖似所示為一個符號表的 示例:w和似0淞浚54鶚嫉i販直鶚荄的內(nèi)情向貴表 維數(shù)界差u下界(j上界0u uuu0u0u卿指針作為一個變量,其本身被存放在找空間里,其在各個過程的符號表占有一個表 項。當對指針做符號解析時,利川符號表中記錄的指針變蛍地址,從該地址中取fli數(shù)據(jù) 作為新的訪問地址0渲趕蚴0荻韻笤諛詿嬤械牡叫,經(jīng)過冉次訪存操作,向該地址 進行讀寫操作,最終完成指針訪存操作。綜上所述,關(guān)于指針可以得出如下結(jié)論:指針 變呈身存放的地址足保持不變的,需耍變化的只足它存
21、放的內(nèi)容,因此利川指針訪問 同類型的不同數(shù)據(jù)對象時,首先對指針進行符號解析,獲取指針執(zhí)行對象的內(nèi)存地址, 最后再從該地址所指內(nèi)存空間中取岀數(shù)據(jù),從而達到利用指針訪問內(nèi)存數(shù)據(jù)的y的。然而在硬件上支持指針時不能完全依照傳統(tǒng)編譯器實現(xiàn)指針結(jié)構(gòu)的理論,m程 序運行時不能動態(tài)確定桁針變呈的地址,也不能通過解析指針變呈得到一個新的數(shù)據(jù)地 址。為了在硬件上動態(tài)地確定桁針在程序執(zhí)行點處訪問的其體數(shù)據(jù)對象,本文提fh了硬管理,提前確記其在硬件上所冇可能指向的數(shù)據(jù)對象。該表獰放了每個指針變a指向的 所冇數(shù)據(jù)對象的偯息,包拈數(shù)據(jù)類型、該數(shù)據(jù)類型對應(yīng)的誠性信息以及起始地址等。映 射時,根椐抽象符兮表的統(tǒng)計結(jié)果,結(jié)合程
22、序屮的指針訪存需求為指針所指的每一個數(shù) 據(jù)對象建立訪存的數(shù)據(jù)通路。當0g程序運行吋,動態(tài)地訪問指針所指的各個數(shù)據(jù)對象。qq木章小結(jié)木章首先簡要介紹了而向如的nj重構(gòu)混合計算系統(tǒng),闡述了可重構(gòu)計算在高性能計算領(lǐng)域中的重要忡;然p詳細介紹了00架構(gòu),分析了菽于00進行二次開 發(fā)的優(yōu)勢;接著介紹了基丁仙的000芍毓貢嘁肫鰨0l芙崍蒗m的編譯指針分析足靜態(tài)程序分析領(lǐng)域最東耍也最其難度的研究課題。指針分析的h的在子 通過靜態(tài)稈序分析獲取指針的指句信息集合。指針分析在指針的硬件映射過程屮占冇重 耍地位,只冇獲取稈序屮指針的指a信息集合才能使得指針能夠準確地訪問數(shù)據(jù)。本章 對典型的指針分析算法進行了研究,提
23、出了菽于000000j0000000髏舾猩舷攣拿舾0指針分析算法,木文簡稱為uu. uu指針分析算法。00典型指針分析算法研究指向表示法為0u械拿懇枳s詰柏枳鮒剛胃畔0希u溝酶眉醐腫的各 個節(jié)點形成一一對應(yīng)關(guān)系。別名對表示法將互為別名的表達式川一個二元組來表示,二 元組中的w個農(nóng)達式可能存取相同的內(nèi)存位置。然而,別名對無法在程序分析吋a然地徑uu愿魈酢奧肪0上的闌數(shù)分別進行措針分析。例如,uu函數(shù)u蔚饔妮u函數(shù),00. 000圖00右側(cè)所示0w罟蠓直鷚0次函數(shù)調(diào)用點前的指針指m信息集合為輸入0000條路徑上的函數(shù)進行指針分析,產(chǎn)生各&的指針指14信息輸出集合00。圖uu立的上下文指針分
24、析指向倍息結(jié)果。首先對程序中的每個被調(diào)函數(shù)進行無調(diào)川上下文的得到上下文敏感指針指向信息柒合gotk分析的結(jié)果如表叫所示。000疎00算法比較000090000uuuuuuuuuuuuuuu. uuuuuuuuuu. uu, uuuuuuuuu. uuuuu. uu. uu00叫岢雋艘恢只0詼芽寺納舷攣莩舾興恪1u00u盟惴亡芩算法的 -種變種算法tl虺艽0算法00叫0惴a饕e0個階段分析組成:本地階段000utjlj和自頂向下階段叫.0u段完成對被調(diào)函數(shù)的流不敏感指針分析;自欣句上階段將木地階段指針別名圖屮與主調(diào) 芘£提出了-種分而治之的流敏感上下文敏感算法【卻舊虺芳芘£惴
25、£。該算法也eee. e 任氐自底向上分析數(shù)屮。張明軍提出了一種基于指14副作用嵌入調(diào)度的上下文敏感指針分析箅法,該算法芘芘芘。節(jié)點芘芘萘韉往治齪螅旋£與往之間的關(guān)系如公式£.£、公式e. e所示。e.ee.e輸入指針信息圖例如圖-所示代碼什段,其-繽,.-荊'哉,觫1的流敏感指針分析 過程如下所述。v估鉚,魅鰊,的開始節(jié)點,指針指向輸入信息窠合v為空,指14確定的單個存儲位置,w此,鬧趕蜆叵當磺恐聘,攏琍產(chǎn)生新指關(guān)系:v詁銅'劈陬礁齦附訪鋼。曉m'就mw1',堊,瑤,詰愕驅(qū),賦值操作表示,趕騫所桁位置,這使得其父節(jié)點 處
26、'鬧趕!!1 兒柄哺室堊1捉,珀'通'分析結(jié)果如農(nóng)-所示。uuu uuuu0, 0u, u0,0,0,0,u,(1,uuu, u, u> u, u, u, u, u(1,0,l1, uu,u.u,u.u,u.u,uu0. 0, 0, 0, 0, 0, 0, 00,0,g,0,g,0,0,uuu面向硬件的指針分析精度耍求指針分析在許多成用領(lǐng)域具有巫要價位,例如編譯優(yōu)化、錯誤檢測等。不同應(yīng)用對本文利川oumo編譯工具將0闖絳蜃3晃6糠諷0形式的00中間代碼,裾條件對otl雙u選擇。部分叫侵付閱掣齟媧s恢媒0卸啻巍案持cio錙00:qqqqqq00遙0,0; qq.qq
27、qqqq qqqqq%quui細屮w代碼的控制流閣qqqqqqoqqqqqoqo%qqquqoqqqqqq. 00qqqquqquuaqiqq00指針別名分析報告00作為一種編譯架構(gòu),本身具有指針別名分析功副捌。00為第三方幵發(fā)者留有指針別名分析接u,開發(fā)者可以添加適合fci己的指針分析功能。00 £|帶的指針 別名分析結(jié)果如閣所示。分析閣00可知,該分析結(jié)果里不含有程序中指針的指向 倍息集合,無法為指針硬件映射提供必耍的輔助信息,所以本文添加了而向指針硬件映muuuuuuuuuuua% 0 琲 ua % 0:uuuuuu%uo%u.【u.uu:指針分析精度直接影響主調(diào)函數(shù)與被調(diào)函數(shù)
28、間數(shù)據(jù)交互的正確性以及硬件資源占用率,00.叫指針分析算法qqqqooq00遙oooo培的:qqq%qqq :oqqqqqo】%qqqqqq%qqqq:qqq%oqqqq% 曲oooo荊0,00浚0荊000000】;0000000】;qq3qqqqqqqq, qq qqqqq qqqqq0桁針操作oq頟寫引用 指針上下文主要對應(yīng)00000薟級0力宰蟊澩鋪澆0卸0犯持0、00根據(jù)模塊使能佶號的有雉于00的00指針分析采川指向集的表示法表示指針分析結(jié)果,首先建立 00,然后將00轉(zhuǎn)化為000000uuuuuqqq,最后廣度優(yōu)先指針相關(guān)指令建立uu,并以父5點的指針分析結(jié)果為輸入進行流敏感指針分析:
29、如ooootltlo噶藺cl辛體舾兄剛敕治觶0緩蠓禱。oo蔥衞oootio處理過程,對指針的讀yi用指令oo進行流敏感指針分析,00蔥®000oil去0蹋0災(zāi)剛組男匆0彌喝粕00進行流敏感指針分析,00蔥®000u0處理過程,對函數(shù)調(diào)用指令00進行上下文敏感指針分析,節(jié)點內(nèi)的指針類型表達式,故木文將ini屮的非指針類型表達式消除,形成iitj,裾結(jié)構(gòu)如下。uuuuuu; / / uuu uuo uuuu海簌(juuuuuuuuu; / / uuuuuuuuuuuo uuoouuuuu / /每個指針的一個0內(nèi)的指向信息集合結(jié)構(gòu)體00000記錄每個節(jié)點處的指針指向信息集合,域
30、成員ooo記錄節(jié)合。00記錄每個0中各個指針的指向信息集合;00鍬約00指令中指針的指向 關(guān)系;cma記朵如中各個節(jié)點的子節(jié)點。符號.o硎炯a細o攏o.表示指針與0 0uqqqq:/.廣度優(yōu)先遍歷000000的00a / oqqqqaqqqqqq;o qqqqq產(chǎn)遍歷00的各個節(jié)點a /o0q q oqq0q(too qqq0uuuuquuquqqquqqq; /p處理桁針賦位指令 /qqqqqqqqqqq qqq. qq措針分析算法0000的流敏感上下文敏感指針分析。建立如后,廣度優(yōu)先遍歷分析各個節(jié)點,僅證分析當前節(jié)點時已經(jīng)完成其前驅(qū)節(jié)點的流敏感桁針分析,使得當前甘點的桁針分析是流敏感的。q
31、qqqq«p,數(shù)據(jù)結(jié)構(gòu) qq如果循環(huán)出u節(jié)點的輸出指叫信息集合影響循環(huán)入li節(jié)點的輸入指叫信息集合,那么組 分析的前驅(qū)節(jié)點,只冇當前分析節(jié)點的所冇前驅(qū)節(jié)點已經(jīng)完成流敏感分析后才對其進行能受(j影響乂可能影響tj以及循環(huán)體節(jié)點tj與u。u首次被分析時其前(j卻米uuuuuuuuuuuuu:醐、uuuuuuuuuuuuuuuu / /判斷指令類型°uu緊uuuuu】uuuo 0緇0浚u叫0ufiuuuuuu / uou uuuu. uuu0uo. uu uuuuuuiiu. uuuuuuuuuu:0 uuuuuuuuuuuuuuu uuuuuu直接指向的數(shù)據(jù)集合繽0. 0所示,
32、qqqqquq, qq0幫0的指向信q鬧苯又趕蜆叵00籮0琍,0qm朌0的最終指向信息x系0 qqqi>,峨0。q / / qqqflj qq0000000 1d0緦00【000;uq0q fooa數(shù)000 00篛0000000000如圖0q000實現(xiàn)對桁針讀引用的流敏感分析,根據(jù)竹點內(nèi)00示,0喝傾00000烈0脬000姆治齬0倘縵攏焊0軺00牡員個操作數(shù)與0q0詈笊0蓂的直接指句信息集合0, q。uuuuuuuuuuui-uuouu uuuuuuuuuuuuu uuuuuuuooljlj uui強更新oooooooooooqdooo°uu uumooo】00/ /弱更新uu
33、uuuuuuuuuuu uuuuuuuuu行弱史新。圖0剛胄匆0玫牟煥0例如圖0000荊稀0母附詰銦0曉0災(zāi)剛耄0的0賦值0溝妝0荒芏裕0笫0霾僮魔u鬧苯又趕蛐畔a全部傳遞給了節(jié)點u導噬舷嗟庇詬粗w綦00指傳遞給0,使得對0進行弱央新。圖000|訓胄匆0玫氖糾0針分析時主要處理叩指令,分析所耑的重要數(shù)裾結(jié)構(gòu)如下。qqq qqqqqqq; /參數(shù)位置qqqqqqqq; /被調(diào)函數(shù)引叫00海蔣cmooooo, oa海簌ooooooooo; /被調(diào)函數(shù)木地分析結(jié)果 qq qqqq: /是否完成本地分析uuuuuuuuuuuuuuu; /標示相同函數(shù)的不同調(diào)川點/被調(diào)函數(shù)上下文敏感分析結(jié)澩i相冋函數(shù)的
34、卜/k義敏感分析結(jié)果/艘集不同的被調(diào)函數(shù)uouou:uuuuuu uuuuuuuuu;uuuuuuuuuuuu;/針對被調(diào)函數(shù)的當前調(diào)用上不文,進行上下文敏感分析uu,/利用實參的指針指叫信息更新形參在被調(diào)函數(shù)的當前調(diào)用點的指針指叫信息uuu 00 uuu -u00uuu0uuu 加:i更新主調(diào)函數(shù)的指針桁14信息uuu0 吒/史新被調(diào)函數(shù)的上下文敏感指針分析結(jié)果uuu00000(如圖00000的處ffl原則是,對于遇到的付條00指令,首先判斷 其調(diào)用的函數(shù)足否己經(jīng)完成本地指針分析:如果沒有分析,則進行基于00的流敏感 指針分析,利川分析結(jié)災(zāi)史新w誠所有被調(diào)函數(shù)指針分析結(jié)災(zāi)的倍息列表00000
35、: 否則不對該函數(shù)本身進行指針分析。然后利川主調(diào)函數(shù)005許55指令前的指針分析 結(jié)果35琚6以及53魑t玫鍵玫愕牡鎏蒙舷攣市員壞骱5鼷m的本地分析結(jié) 果更新,外記錄到m屮。如果更新后使得主調(diào)函數(shù)的指針分析結(jié)果發(fā)生改變,則更 新主調(diào)函數(shù)的指針分析結(jié)果,以此作為下一條指令指針分析的指針指14輸入信息。待整 個劃分給硬仲的35闌數(shù)分析結(jié)束后,30即為相同函數(shù)在不同調(diào)川點的指針指向 信息集合。本文提出的go. 00指針分析算法以基本塊為分析粒度,ffl比干以整個程序為 分析粒度的流不敏感上下文不敏感算法的指針分析精度冇了明砬的提升;與以單條指令 為分析粒度的閒指針分析算法相比較,不但對以達到相同的指
36、針分析精度,而.r.降 低了指針分析的空w復(fù)雜度。50本章小結(jié)木章首先分析了典型的流敏感指針分析算法以及上下文敏感指針分析算法,研究了流敏感上下文敏感分析算法原理:然后分析z面m硬件的指針分析粘度要求;最后結(jié)合 已侖的流敏感上下文敏感指針分析算法原理,而向指針硬件映射的指針分析精度要求以00硬件映射模型結(jié)構(gòu)根據(jù)上述指針硬件設(shè)計思想,設(shè)計了如圖00所示的指針硬件映射結(jié)構(gòu)圖。圖中虛 線框表示靜態(tài)輔助信息,不產(chǎn)生具體的器件;實線框表示硬件電路,產(chǎn)生具體的器件; 實心箭頭表示單個數(shù)椐或指令;空心箭久表示一組數(shù)據(jù)。圖00屮的各個功能模塊說明 如卜.0地址生成器針控制地址運算單元構(gòu)建訪存通路剖鍪薔霉登嚳嚳
37、表介詢數(shù)據(jù)選3控制模塊oft制模塊0埔制模塊里里相、靈川、鼓0韻蟊嗦爰0蠑0 00u桁令通過指針分析以及構(gòu)建抽象符號表的方法確記編碼h標,采川統(tǒng)一編碼技術(shù)對指針指向 目標進行編碼。對于給定的指針,查詢抽象符兮表獲取指信息集合,然后結(jié)合編碼結(jié) 果為指針訪存生成控制信兮。數(shù)據(jù)讀寫控制以及訪存數(shù)據(jù)選通等。遍歷指令吋,指針仲裁機構(gòu)負責判斷指令的處理方式:對于qo捧qoq疲如aooa等非訪存指令,若指令返四指針類型,則移交指針訪存 控制權(quán)限;對于/如0噶樣o綣a么婺康鋱嵌粒o叢慫閌q藎o敲次猢cm捧cm構(gòu)建 訪存通路,完成運算數(shù)據(jù)的訪存讀寫;如果訪存目的是讀/寫指針變最,那么當多級指針 變量不足娥數(shù)輸出
38、參數(shù)時,移交指針訪存控制權(quán)限;否則進行運算數(shù)據(jù)讀寫操作。訪存通路構(gòu)建完成g,為指針訪存產(chǎn)生各路指針控制信號。移交指針控制權(quán)限的方法避免了 多級指針的多次訪存操作,利川一次訪存方式實現(xiàn)各級指針的硬件訪存。種基地址位。在指針控制信號作用下,該模塊動態(tài)地選擇山杏詢抽象符號表獲取的初始 基址集合。助倍息。苜先查詢抽象符號表獲取各個h標的維度及維數(shù)倍息,然后在指針控制倍號作 用下,動態(tài)地選擇所需信息o峁0剛朊看我貧o鈉o頻g妨0。確記訪問的h標存儲器。根據(jù)指令的訪存耍求進行存儲器讀寫操作:若足oa指令,則00指針控制單元映射指針校制單元由靜態(tài)輔助倍息和硬件電路兩人部分組成。靜態(tài)輔助倍息包拈指針仲 裁機構(gòu)
39、、抽象符兮表和指針指a目標的編碼似;硬件電路包拈移交控制權(quán)限和構(gòu)建指針 訪存通路。指針控制單元映射時,通過在編譯階段判斷輸入指令類型完成指針仲裁機構(gòu) 的功能:如果非訪存指令0華00蚋00指令0伎剛肜«橢喝0指令的左操作數(shù)足 000000,那么木文判定該指令的厶操作數(shù)須將k指針控制權(quán)限移交給厶操作數(shù),否則判定該桁令進行tjtjutjt唬蝗綣ij么嬤喝頼0u的笫u霸僮魘i)萆ouutjiju霾僮魘o鬧剛肟u迫廠摶t壞o個操作數(shù),叫將右操作數(shù)的指針控制權(quán)限移交左 操作數(shù),否則構(gòu)建訪存通路,進行訪存操作。指針控制單元的其他組成部分的&動映射 過程如卜所述。構(gòu)造抽象符兮農(nóng)用干提供構(gòu)建指
40、針訪存通路的依據(jù)和地址計箅所需輔助信息、建立uuuuuu uuio 1聊抽象符號表主嬰山0蟛糠幟諶葭鉤桑00 0剛胗朐慫閌13莼蛑剛氳畝雜tl叵:當0木運算數(shù)據(jù)或指針的維數(shù)倍息0剛胛0仁侵鋼剛脛趕虻哪勘甑奈00及初始基地址倍息表 o虺芾3a菪畔的。指針對應(yīng)關(guān)系表、w性rt容表以及數(shù)據(jù)信息表三齊間的組織關(guān) 系如圖00所示。信息集合;第三列000合叫也可能存在交集,原因在于不同指針可能與相同的運算數(shù)裾或k指針存在對極關(guān) 系。屬性內(nèi)容農(nóng)主要由運兌數(shù)據(jù)或其桁針的0如屬性,cm類型屬性以及維數(shù)信息屬型,如數(shù)組o加o涯珪鎚o加蛘噠0齣0的等,維數(shù)倌息屈性則巾數(shù)據(jù)偯息表詳細描述;數(shù)據(jù)信息表描述了運算數(shù)裾的維
41、數(shù)0如表示共有兒維,q0硎靖魑0笮0以及初始化指針變m吋的初始基地址,其中數(shù)據(jù)0c1q奈00賺程序中的維數(shù)和對應(yīng),0叩與申請堆空間時聲明的維數(shù)相對應(yīng),木文默認整數(shù)ciaao奈0如。構(gòu)造抽象符兮表的方法如下:首先00. 00獵程序編譯轉(zhuǎn)換為如0;然后將迕續(xù)基木塊封裝成00函數(shù);最fi,以00函數(shù)為對象進行瓜層的指針分析,確定每個指針的指向信息集合。指針分析結(jié)果使得每個指針的指向信息集合里的各個元 素與該指針w存在直接指向與直接被指向的關(guān)系,而在硬件上利川指針訪問存儲器的h 的在于獲取運算數(shù)據(jù),因此本文在指針分析階段冋吋確記了指針最終指向的運算數(shù)據(jù)或者運算數(shù)據(jù)桁針集合,搜集00000集中各個元素的
42、賊性信忠,色拈類型信忠和維數(shù)倍息,終生成屬性內(nèi)容表和數(shù)裾倍息表。硬件映射時,利用如0示構(gòu)建訪存通路的條數(shù)。屬性內(nèi)容農(nóng)和數(shù)據(jù)信息農(nóng)羅列出000類型和維數(shù)信息,為每條訪存通路中的地址生成提供基地址和偏移地址量信息。本文還利川抽象符號表對指針指向h標編碼。編碼0標主要包括00函數(shù)的指針參數(shù)、被識別為00端0的堆棧空間。酋先求取所有00000集合的并集,然后 統(tǒng)一編碼對新集合里的各個元素,形成整個00函數(shù)的指針編碼集合,標識指針指向 的各個運算數(shù)據(jù)或蕎申請的不同堆??臻g00械脇ooa萑000。遍歷00嫡數(shù)的每條指針賦值指令,結(jié)合指針編碼集合為指針訪存牛成指針控制 信兮,動態(tài)地選通稈序運行時指針汸存操作
43、指令處對應(yīng)的汸存通路,控制地址計算時所第ij輪剛胗倉銜:n動映射設(shè)汁指針控制倍號。卿當程序運行時指針一次只能訪問某一個具體數(shù)椐,w此崙要標識指針指14的每一個可能指向的數(shù)據(jù)集合是0, us00破闖絳蛟誦惺敝剛隈在不m的輸入控制下可能訪式。例如,0駙剛氡淞縯、0紹,其中0趕騸和0琍指向00和0琿指向00、00以及0v剛離、0炤存在指向依賴性,三者都可能指向0咐。當桁針00和g鬧趕蚣辣嗦朧?,屩赶?鍪u藎0恍ti個00槐曄袢的指u鞭u位標示k指叫的數(shù)據(jù)。分析圖utj屮的編碼結(jié)果可知,u蚶存在兩個不同的編那么可直接傳遞標示結(jié)果0繽0. 0如,無需增加額外電路,降低了電路規(guī)模。uuopoooo
44、4;(二。uq兮卿硬件資源占用率是衡景硬件設(shè)計質(zhì)景的重要標準之一。因此還需考慮編碼分式對 m程序綜合后的硬件資源影響。編碼結(jié)果維數(shù)足評價編碼方式好壞的熏要因素,維 數(shù)似越小,映射為硬件后所耗費的硬件寄存器資源越少,編碼方式越好。獨立編碼方式 所耗費的寄存器資源將少于統(tǒng)一編碼方式所耗費的寄存器資源。w此從資源占用率的角 度考慮,獨立編碼方式優(yōu)于統(tǒng)一編碼方式。隨著00性能的不斷捉高,00硬件資源越米越豐宮。減少少s寄存器資源并 不能實質(zhì)性地提高硬件沒計質(zhì)景。w此,本文重點考慮編碼電路規(guī)模,采用統(tǒng)一編碼方 式標示指針指句信息集合元素,其編碼過程如下。-個新的指針指向h標集介,表示所侖指針的指向a標
45、放位背編即為該f1標元素的統(tǒng)一編碼結(jié)果。個操作數(shù)類型為非指針類型或者第0齠嗦噸剛鉍僮魘0嗆00涑繡悶0脳00指令。uououo uu%uuuijo%ijuijl)%uuuuu。扁uuu, uuuu0020, uuauu指針訪存通路的構(gòu)建位胥確定后,結(jié)合抽象符號表中的指針對應(yīng)關(guān)系表以及指針所 指對象的編碼結(jié)果,為指針構(gòu)建訪存通路。遇到滿足構(gòu)建指針訪存通路充要條件的 00 / 000噶罟螅0玲0g癢00指令中的指針操作數(shù)作為查詢關(guān)鍵字,找到指針對應(yīng)關(guān) 系表中的對應(yīng)農(nóng)項,確定該指針的擴展指向信息集合,集合人小即為訪存通路的條數(shù)。 然后查詢指針擴展指向信息集合中各個元素往指針所指對象編碼集合中的對應(yīng)編
46、碼值,u該表項rt鞞表明,u鬧剛肜a怪趕蛐畔mo銜獅o掙,o,因此需要為指針ooo 選通仲裁機構(gòu),如閣所示。指針訪存吋,將地址生成器產(chǎn)生的地址流送給和應(yīng)的存 儲器,確定訪存的存儲器單元位置。此時通過指針控制信兮決定各條地址流以及存儲器 讀寫使能的旮效性,如閣'所示。指針寫引川的訪存通路構(gòu)建結(jié)果如閣'所示,包括地址選擇、數(shù)裾選通以及存儲器的讀寫控制。隊 指針壊引用地址控制集合z,元素編碼結(jié)果:菊;、數(shù)組桁針。下面本文主要分析前述兩種指針的005訪存行為特性。數(shù)組指針的0訪存行為方式分類%000000%0oo0eei%0iu%000000%000.oeo埔是常數(shù)%000000醐】0
47、00% 0000001jo, %0%o00000o(5000【0俊錫】% 00:級指針輝儆莜0荻取域址偏 移地址鏜05么媯5找到通過上一行所述方法獲取一級桁 針0螅8儆菔0獲取基址偏移00噶罨袢j 0菲0頻ij罰0,. 閒訪存數(shù)組元索。訪問 0彌罸 00址,敁后得劍儆般0計算%000000e0sw 900%000000裾的訪存地址。5055噶畋硎w剛氳畝烈3茫歡雜詼嗦噸剛耄栗50喝雊6003m指 令結(jié)介,完成多級指針的降級數(shù)處理,最終得到指針訪存的s接數(shù)據(jù)地址。(發(fā)現(xiàn),(喝畹鉍導室庖逶謨諢袢.嘍雜諂淶(個操作數(shù)的偏移量,如表( 中第(欣锏鬧噶睿(表(中倒數(shù)第(欣锏鬧噶睿(宰(宰(, %(硎鞠嘍
48、雜謔椎ij罰(偏移 %(鑫恢茫(緩笤儐螄縷(疲(個位置,得到相對于首地址的最終偏移呈。分析表明, 指針在(不連續(xù)方式 (緊】<止((二/(的地址似,不會出現(xiàn)元素地址錯誤、地址後蓋或芯地址遺漏等問題。w此,木文以連續(xù)uuuuoci維0錕】:otltl。維imi】【0浚箄iootnj,叫淼i)維人小。00維00000 】_【1)0浚箄掌00盡mti0_00硬件映射時,木文主耍采用加法器、乘法器以及選擇器等實現(xiàn)地址生成器。指針訪 問的數(shù)組規(guī)模越大,地址計算表達式越s雜加法器、乘法器等器件數(shù)目也隨之增長。然計選擇器對初始基址和新基址進行選擇。桁針訪w00u楹tl維數(shù)纟j1的地址牛.成器硬巾于指針
49、訪問數(shù)組吋使川的空間人小通常小于等于聲明吋的空間人小,所以主耍采 川使川吋各維人小作為參數(shù)以節(jié)竹00空間。指針通常在循環(huán)結(jié)構(gòu)中完成數(shù)組訪問,所以計數(shù)類循環(huán)關(guān)鍵變景與指針訪存存在依賴關(guān)系的的依賴函數(shù)的最人值即足數(shù)組被 使用的各維大小。然而當指針不在循環(huán)里訪悶數(shù)組或齊處于非計數(shù)類循環(huán)時,木文將在 數(shù)組或vt堆空間聲明時的各維大小作為參數(shù)。上述計數(shù)類循環(huán)指循環(huán)執(zhí)行前,循環(huán)初值、終值以及步進值確記,h.在循環(huán)運行吋 不被改變的循環(huán)。分析計數(shù)類循環(huán)的0氐0如閹000a0. 0、閣000表明,使循環(huán)的并列循環(huán)的嵌套uuuuuuuuuuuuuuuuuuuuuuu; uuou:/ /比較指令類型mkz : m
50、im / /返回循環(huán)關(guān)鍵變量起始倂n/ /遞.增循環(huán)/不等于tg觀畫層循環(huán)次數(shù)即為1/?/!mxe«鵲奈譏x倘繽x. k所示。足否循環(huán)關(guān)鍵.u埏u縯u鍵m駘u鞘u依uuu關(guān)u系,與依賴關(guān)系成立時停丄指令回溯,從而還原產(chǎn)的維數(shù);當依賴關(guān)系不成立時,繼續(xù)指令回溯,并根據(jù)該指令的操作類型還原為相應(yīng)的 算術(shù)表達式。指令回溯是指將指令的右操作數(shù)轉(zhuǎn)換為指令,以轉(zhuǎn)換后的新指令為新起點 繼續(xù)指令轉(zhuǎn)換的過程。uu 0輥嶋0uuuuuuuuuuu uu藎t)哆0代碼的行為層次關(guān)系示例閣utj函數(shù)中數(shù)組nj能在多個循環(huán)結(jié)構(gòu)中被措針多次訪問,故獲収措針訪存數(shù)維數(shù)組的菜個元素oomo浚捉00氳男形饋偽硐秩繽o
51、. ij所示,通過分析數(shù)時退化為指針,丟失第00畔0。例如靜態(tài)000閒【0俊0】【0康墓閑m轎如確定各維人小,所以木文不女持在非計數(shù)類循環(huán)或者非循環(huán)結(jié)構(gòu)里利用指針訪問動態(tài)數(shù)44存儲結(jié)構(gòu)組織基于444芍毓貢嘁肫鶻4付1牒44444封裝為蚋數(shù)后,如何確定該闌數(shù) 屮需要被分配存儲單元的變景以及被分配的存儲器人小對指針的整個硬件映射過程尤 為巫要。只有確定/被分配存儲單元的變量后方能將利用指針對艽指標進行讀寫操 作,完成指針訪存功能:只有髙效的分配存儲器,為每個指針指a 0標分配適合大小的 存儲器才能更好的節(jié)約有限的44存儲資源,提髙指針硬件映射的模型映射質(zhì)量。存儲結(jié)構(gòu)組織主要是指存儲單元的分配。靜態(tài)
52、指針分析結(jié)束后,確定了指針訪問對 象的集合,但是該集合內(nèi)可能存在指針類型的元素。與444鰈程序里的指針變景 類似的是,硬件上指針訪存的真實h的在于讀取或者寫入非指針類型的運算數(shù)據(jù)。w此, 本文為指針訪存分配存儲單元的原則是:利用抽象符號表中的指針對應(yīng)犬系表,將該表中各個表項里的444儲單元分配時,則為該度量標準集合巾的每一個元素分配一個44。分配44的存共有44鏜4444識4臍渲夢44塊獨立的444。本文為指針指向s標分 配44大小吋按照最小分配原則:對于指針指向的fi標元素,當其大小小于最小 44最小分配單位時則為該元素分配整塊44;當其大小小丁兩塊最小分配單位總 和吋則為該素分配兩整塊44
53、并以此類推。44本章小結(jié)00指針硬件映射示例分析uuuuuuuu:% uuuuu uuuo uuuuuu. uuuuuuuu£uuuuu, uuuuuuuuuuuuuuuuuuu 蝴uuuououuuuuu:uuuuuuu:uu土o uuuuu0: °un. . uuuuuuu£u蔓0星.ouu必.4uuodduuouo叫祈辦0000000444414444444一-剛u uu與叫代碼的對應(yīng)關(guān)系中每個節(jié)點與虛線箭久指向的00代碼對應(yīng)。裉于如的00指針分析結(jié)果表明指針00雙0的指向r標同為數(shù)組0隻。因此,圖00中的®木塊0q0利川指 針00么媸斃抨'q條指針訪存通路。在基本塊冢堺0在模塊使能作川下接0約埃0賦予的指針訪存控制權(quán)限,從而獲得訪問數(shù)組0駿的權(quán)限。求和的硎衿鰨i30q表示加法器,qq/0硎究櫬媧%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45141-2025反滲透進水修正污染指數(shù)測定方法
- 別墅清包工合同范本
- 醫(yī)院合資合同范本
- 農(nóng)藥合同范本
- 勞保買賣合同范本
- 二手房出售門面房合同范本
- 水槽代工合同范本
- 醫(yī)院信息咨詢合同范本
- 主體沉降觀測合同范本
- 單個產(chǎn)品銷售合同范本
- 第二章政府審計組織與審計法律規(guī)范
- 楚才辦公室裝修設(shè)計方案20140315
- 人教版八年級(上冊)物理習題全集(附答案)
- 電影院影務(wù)崗位工作流程
- 畢業(yè)論文牛仔布染色工藝和質(zhì)量控制
- 計數(shù)的基本原理說課
- 機器視覺論文(英文)
- 高中學生秧田式課堂座位管理探究
- 初中花城版八年級下冊音樂6.軍港之夜(15張)ppt課件
- 《供應(yīng)鏈管理》讀書筆記
- FTTH組網(wǎng)邏輯圖
評論
0/150
提交評論