999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于增量鏈接的可回滾星載軟件在軌更新方法

2015-08-10 09:20:00汪宏浩王慧泉金仲和
浙江大學學報(工學版) 2015年4期
關鍵詞:程序

汪宏浩,王慧泉,金仲和

(浙江大學 微小衛星研究中心,浙江 杭州310027)

早期星載軟件通常是固化的,只有部分長壽命航天器有軟件在軌更新功能[1-2].隨著航天技術的發展,星載軟件復雜度越來越高,存在缺陷的可能性越來越大[3],這對于功能密度非常高的皮衛星尤為突出.因此,需要為星載軟件提供在軌更新功能,修復在軌故障,延長衛星壽命[4-5].此外,在衛星壽命末期通過軟件在軌更新可以擴展衛星功能,對新任務進行在軌試驗[6].

與地面系統相比,星載軟件在軌更新面臨諸多挑戰:如星地鏈路通信速率?。?]、通信時間有限,必須減少更新上注數據量;星載計算機的資源有限[8],且須持續提供服務,因此不能執行復雜的更新算法,要減少停機時間;衛星在軌運行時無法進行人工維護,而軟件在軌更新對衛星穩定運行有影響[9],因此需要保證軟件在軌更新過程的可靠性,使之具有回滾到更新前穩定狀態的能力;為了修復未知缺陷,按需完成新任務,要擴大軟件更新范圍,保證在軌更新的靈活性.地面系統軟件動態更新技術[10-13]旨在降低停機時間,更新復雜度和上注數據量均較大,需要復雜的操作系統支持,因此不適用于星載軟件更新.

目前也有對星載軟件在軌更新的相關研究.如將完整星載軟件上注至衛星,重啟系統以完成更新[14-15],這類方法對星上軟件無特殊要求,可以任意擴充軟件功能,但更新數據量大,會長時間占用遙控通道,且重啟會造成星上軟件中斷時間長.李磊霞等[6,16-17]將軟件劃分成多個模塊,利用操作系統加載技術將修改過的模塊作為補丁替換原模塊,達到更新的目的.這類方法可以顯著地減少上注數據量,降低遙控通道占用時間,但需要星載操作系統有模塊加載功能,且需預先決定模塊可否更新,降低了更新操作的靈活性.

軟件更新需要對舊代碼進行修改得到新代碼,編譯生成二進制目標代碼并上注至衛星.為了避免上注數據量過大,可將新舊版本目標代碼的差異部分作為上注補丁,但源代碼的一個小改動會使得目標代碼變動較大[18],導致上注數據量過大.Kiyohara等[19-21]研究對差異部分壓縮的算法,但解壓縮算法較復雜,不適用于星載計算機.增量鏈接是編譯器為提高鏈接速度提供的一種優化功能,目前大多數編譯器都已實現了該功能[22].增量鏈接可以使編譯器僅重排修改過的函數地址,而未修改函數的地址保持不變,從而降低軟件修改前、后內存空間布局的差異.利用這一特性,提取修改前、后內存空間差異部分制作補丁,星上根據補丁直接對原軟件內存空間進行修改,無需重啟即可完成軟件在軌更新操作.

基于上述特性,結合某型號皮衛星的任務需求,本文提出一種無需重啟、上注數據量小、可以任意修改或增減軟件功能,并可使軟件回滾至更新前狀態的星載軟件在軌更新方法.

1 硬件平臺與軟件結構劃分

硬件平臺采用TI的C6000系列DSP作為中央處理器.該處理器包含定時器和DMA 模塊.為DSP配有2MB SDRAM 擴展內存,2 GB NAND Flash擴展外存,使用FPGA 實現看門狗和邏輯資源擴展.軟件存儲于NAND Flash 中,運行時被加載到SDRAM 中.

為了實現在軌更新,將星載軟件分為監測程序和業務邏輯程序兩部分.監測程序包含保證系統正常運行的硬件驅動程序(即驅動DSP、SDRAM、NAND Flash和FPGA 的程序)和負責實施更新操作和監控的模塊,監測程序不能被更新;業務邏輯程序用于實現衛星的各項功能,如星務管理、電源管理、姿態控制運算等,該部分可以更新.具體結構如圖1所示.

系統上電時監測程序首先自舉加載,然后初始化DSP、FPGA、SDRAM 和NAND Flash,保證系統正常運行,接下來由更新操作模塊加載業務邏輯程序,執行衛星的各項功能.在業務邏輯程序加載后,監測程序仍定時運行,用于負責業務邏輯程序的在軌更新.

為了保證監測程序不被更新,鏈接階段將監測程序和業務邏輯程序置于不同的內存空間,實現物理隔離.監測程序僅對業務邏輯程序所在的內存空間實施更新操作.

圖1 星載軟件結構劃分Fig.1 On-board software structure design

2 軟件在軌更新方法

2.1 更新方法概述

一次完整更新過程如圖2所示.首先在地面完成補丁制作;然后通過地面站將補丁上傳至衛星,衛星解析和校驗補??;最后根據補丁信息對星上軟件進行動態修改.補丁分為2類,即更新補丁和回滾補丁,分別用于在軌更新軟件和使軟件回滾至更新前的狀態.

2.2 更新補丁制作

首先在地面上對舊版本業務邏輯代碼(以下簡稱舊版本代碼)進行修改得到新版本代碼;然后通過調試和測試保證新版本代碼可靠性,代碼編譯過程中采用增量鏈接形式,最后生成新版本代碼的目標文件.

圖2 軟件在軌更新過程Fig.2 Process of on-board software upgrade

修改代碼可以歸納為修改函數、修改全局或靜態變量和修改復合類型(如結構體、共用體等),這些修改最終影響內存空間.由于靜態變量和全局變量位于相同的內存空間,修改靜態和全局變量統稱為修改變量.修改函數影響內存空間的.text段,修改變量會影響內存空間的.data段和.bss段.由于復合類型信息編譯后不保存至目標文件,修改復合類型會影響使用復合類型定義的變量的大小以及函數對這些變量的解析,因此修改復合類型可以歸結為修改函數或變量.在更新補丁制作過程中,須考慮代碼修改后函數和變量在內存空間的變化,根據變化信息制作更新補丁,用于星上軟件的動態修改.

下面舉例說明,假設舊版本代碼包含一組函數F={f1,f2,f3}和一組變量V={v1,v2}.其中f2調用f1、f3,f3調用f1;f1使用v2,f2、f3使用v1.為方便描述,令b(x)表示x 的目標代碼,s(x)表示x的大小,a(x)表示x 的地址.函數f 被放置在.text段.若變量v 未初始化,則會放置在.bss段;若v 初始化,則放置在.data段.為了簡化監測程序更新操作,強制要求初始化每個變量v.這樣舊版本代碼編譯后,所有的b(f)緊挨著放置在.text段中,所有的b(v)緊挨著放置在.data段中.

首先考慮對修改函數造成的內存空間變化.修改函數可以分為修改現有函數、引入新增函數、刪除現有函數3種情況.下面舉例說明增量鏈接情況下修改函數造成的內存空間變化情況.

當修改現有函數時,設修改函數f1得到f′1,s(b(f′1))可能出現如下情況.

當s(b(f′1))≤s(b(f1))時,b(f′1)仍放置于b(f1)空間內,增量鏈接無需分配新地址,即a(f1′)=a(f1).多余的內存空間記為空閑空間.

當s(b(f′1))>s(b(f1))時,b(f′1)無法放置于b(f1)的空間內,增量鏈接為f′1分配新的地址,即把b(f′1)置于新空閑空間中.由于a(f′1)≠a(f1),而f2和f3調用f′1,需要對f2和f3中調用f′1的地址作相應修改.原有f1的內存空間記為空閑空間.上述函數內存空間的變化如圖3所示.

新增函數時,假設新增了函數f4,且被f2、f3調用f4,由于f4是新引入的,因此f2、f3中須加入對f4的調用語句,從而導致f2、f3的內存空間發生變化.f2、f3的內存空間按照圖3中的增量鏈接情形變化,而f4被分配新的內存地址,b(f4)被放置在空閑空間中.

當刪除現有函數時,假設刪除了函數f1,由于f1被f2、f3調用,需 要 在f2、f3中 刪 除 調 用f1的語句,從而導致f2、f3的內存空間發生變化.f2、f3的內存空間按照圖3的情形變化,而b(f1)所在的空間記為空閑空間.

考慮修改變量造成的內存空間變化.修改變量可以分為變量值修改、變量類型修改、引入新變量、刪除現有變量4種情況.變量值修改只修改變量內存空間內容,不會影響內存空間的布局,而其他3種情況可能會影響內存空間的布局.

當修改變量值時,設修改v1的值得到v′1,由于v1的類型不變,則其大小不會改變,無需為v′1分配新的地址,即有a(v′1)=a(v1)和s(v′1)=s(v1),內存中只有b(a(v1))被修改為b(a(v′1)).

當修改變量類型時,設修改v1的類型得到v′1,不同類型的大小可能不一樣,因此會出現如下情況.

當s(b(v′1))≤s(b(v1))時,b(v′1)仍置于b(v1)空間中,增量鏈接無需為v′1分配新地址,即a(v′1)=a(v1).多 余 的 內 存 空 間(大 小 為s(b(v1))-s(b(v′1)))記為空閑空間.

當s(b(v′1))>s(b(v1))時,b(v′1)無 法 置 于b(v1)的空間內,增量鏈接為v′1分配新的地址,即把b(v′1)放置于新空閑空間中.由于f2和f3使用v′1,需要將f2和f3中v′1的地址改為a(v′1).原v1的內存空間(大小為s(b(v1)))記為空閑空間.

上述變量內存空間的變化如圖4所示.

當新增變量時,設新增了變量v3,且f2、f3使用了v3;需要在f2、f3中加入使用v3的語句,從而導致f2、f3的內 存 空 間 發 生 變 化.f2、f3的 內 存 空間按照圖3 的情形變化.v3被分配新內存地址,b(v3)被放置在空閑空間中.

圖3 增量鏈接下函數內存空間的變化Fig.3 Function memory space change under incremental linking

圖4 增量鏈接下變量內存空間的變化Fig.4 Function memory space change under incremental linking

當刪除現有變量時,設刪除了現有變量v1,由于v1被f2、f3使用,需要刪除f2、f3中使用v1的語句,從而導致f2、f3的內存空間發生變化.f2、f3的內存空間按照圖3的情形變化.b(v1)所在的空間記為空閑空間.

最后考慮復合類型定義修改導致內存空間變化的情況.修改復合類型會影響到使用復合類型定義的變量的大小以及函數對這些變量的解析,因此修改復合類型相當于修改函數和修改變量,只需找出受影響的函數和變量,再按照對函數的修改和對變量的修改的處理方式進行即可.

上面分析了增量鏈接情況下對修改函數和變量造成的內存空間變化,而星上軟件動態修改的本質是將星上軟件的內存空間更改成地面修改后的軟件的內存空間.因此,補丁需要包含代碼修改前、后的內存空間的變化信息.上述變化可以用以下2類操作描述.

1)刪除操作:Remove(起始地址,大?。?,刪除操作后的空間記為無效.

2)寫入操作:Write(起始地址,大小,二進制內容),寫入操作后的空間記為占用.

例如圖3(a)~(c)的內存空間變化可以描述如下.

1)Remove(0xC1312311,0x73):刪 除 以0xC1312311為首地址的原有函數f1的目標代碼b(f1).

2)Write(0xC13124A9,0x91,b(f′1)):將b(f′1)置于以0xC13124A9為首地址的空閑空間內.

3)Remove(0xC1312390,0x4):刪除f2中調用f1的地址.

4)Write(0xC1312390,0x4,0xC13123A9):增加f2中調用f′1的地址.

5)Remove(0xC1312424,0x4):刪除f3中調用f1的地址.

6)Write(0xC1312424,0x4,0xC13123A9):增加f3中調用f′1的地址.

更新補丁中只需包含上述操作信息,星上監測程序收到補丁后按照上述操作修改內存,即可完成更新.一個更新補丁中可以包含多個函數、變量以及復合類型的修改,因此會包含多個Remove和Write操作.為了減小更新補丁的大小,將所有的Remove和Write操作放置在一起,為了方便解析以及保證可靠性,為Remove和Write操作的數據加入標識頭和標識尾以及CRC校驗.所設計的完整更新補丁的結構如圖5所示.

在圖5 的更新補丁中,有一組包含m 個Remove操作的數據占用6+6m 字節,一組包含n 個Write操作的數據占用6+(6+)n 字節,為二進制目標碼的平均占用字節數.因此,一個更新補丁占用12+6m+(6+k)n字節.

圖5 完整更新補丁結構Fig.5 Structure of updating patch

在具體實施過程中,利用編譯器前端識別出所有修改過的函數、變量和自定義類型的函數調用圖(Call Graph),可以得到受影響的函數和變量的符號;利用這些符號,依照ELF 文件格式[23],從可執行文件中抽取出每個受影響的函數和變量的二進制目標代碼;將這些代碼與原目標代碼進行對比,可以獲取更新補丁中所需要的信息.

2.3 回滾補丁制作

回滾操作所做的是更新操作的逆操作,即修改內存空間至最近一次更新前的狀態,因此回滾補丁只需包含一個控制命令,即可以設計成衛星的一個遙控指令.遙控指令占用10個字節,具體的遙控指令設計見文獻[7].

2.4 補丁上注

由于更新補丁包含大量數據塊,需要通過地面站以注入數據的方式上注至衛星.為了保證安全性和可靠性,需要約定數據幀格式[24].

我國主要采用PCM 遙控標準,上行碼速率一般為2 000bit/s[7,24],所以設計的注入數據幀長為2 000/8=256字節.一個補丁可能需要多個數據幀才能上注完畢,為了保證星上監測程序可以按順序還原補丁,在數據幀格式中加入分組數和分組編碼.設計的注入數據幀格式如表1所示.

表1 注入數據幀格式Tab.1 Format of injected data frame

補丁上注的過程是將制作生成的補丁按照上述幀格式打包成一個或多個注入數據幀,通過地面站將注入數據幀發送至目標衛星.

2.5 星上動態修改

為了避免數據接收引起星上任務長時間中斷,星載計算機通過DMA 接收注入數據.在接收到注入數據后,監測程序根據表1的格式對數據幀進行解析和校驗,在收取所有數據幀后,拼接補丁數據塊形成更新補丁.具體過程如圖6所示.

圖6 解析和校驗注入數據幀的過程Fig.6 Process of parsing and validating injected data frame

監測程序接下來要根據圖5的更新補丁結構對補丁進行解析和CRC 校驗.若解析失敗或CRC 校驗不通過,則需地面重傳該補丁.解析成功且CRC校驗通過后,監測程序可以得到一組Remove操作和一組Write操作.

為了能回滾至更新前的狀態,監測程序需要在星上制作逆操作補丁,即為每個Remove操作生成對應的Write操作,為每個Write操作生成對應的Remove操作.把生成的Write和Remove操作按圖5的更新補丁格式組織成逆操作補丁,并保存至NAND Flash中.

舉例說明,操作Remove(0xC1312311,0x73)的 逆 操 作 是 Write(0xC1312311,0x73,bin(0xC1312311,0x73)),其 中bin(0xC1312311,0x73)是內存空間0xC1312311~0xC1312383 的二進制內容,意思是將刪除的內容寫回至原內存空間.操作Write(0xC13124A9,0x91,b(f′1))的逆操作是Remove(0xC13124A9,0x91),意思是將內存空間中寫入的內容刪除.

更新補丁中只包含Remove操作和Write操作,因此對星上軟件作動態修改的方式很簡單,即直接尋址到對應的內存空間,根據起始地址、大小進行相應的操作.具體的監測程序應用更新補丁和逆操作補丁的算法如下.

在未執行更新操作前,初始化當前程序版本號ver為0.然后監測程序獲取程序控制權,根據更新補丁生成逆操作補丁并保存至NAND Flash中,再按順序執行所有Remove操作和所有Write操作.最后將控制權交換給修改后的業務邏輯程序,并將ver加1.

同樣地,需要執行回滾操作時,監測程序從NAND Flash中找到最近一次保存的逆操作補丁,解析并按圖7所示的算法執行,并將ver減1.在執行逆操作時不需再生成逆操作的逆操作補丁,因為逆操作的逆操作即為之前的更新操作.

2.6 出錯情況應對

為了應對程序跑飛和掉電重啟等出錯情況,監測程序保留每個更新補丁和逆操作補丁.

若更新過程出現程序跑飛,導致看門狗將整星軟件復位或整星掉電重啟,則需要重新加載星載軟件.監測程序會首先加載最原始版本的業務邏輯程序,并按更新順序應用ver次更新補丁,將業務邏輯程序恢復到出錯前的版本.若恢復過程中依然出現程序跑飛或整星重啟等問題,則將ver減1,再執行一次恢復過程,直到ver為0時為止.具體算法如下.

3 試驗驗證

基于某型號皮衛星星載計算機平臺,對所提出的軟件在軌更新方法進行試驗,主要針對補丁大小、上注時間、更新操作執行情況、回滾操作執行情況和更新出的應對情況進行測試.

雖然試驗是在地面進行,但為了模擬星地鏈路通信速率,補丁通過地面站以2 000bit/s的PCM遙控模式上注.

3.1 更新和回滾操作試驗

原始版本業務邏輯程序的目標代碼大小為275 kB,進行了4 次版本修改,共得到4 個更新補丁.表2顯示了更新補丁應用的試驗結果,包含每個版本目標代碼大小、更新補丁大小、補丁上注時間、代碼修改信息和補丁包含的Remove操作數m、Write操作數n和二進制目標碼的平均字節數.

在星上運行版本4程序時,上注回滾補?。窗l送用于回滾的遙控指令),星上業務邏輯程序成功回滾至版本3.

表2的結果表明,該方法的更新和回滾操作功能正確,更新補丁大小遠小于目標代碼大小,補丁上注時間僅為秒級.其中,即使版本4相對于版本3進行了大量修改,補丁上注時間也僅為46s.與上注完整軟件的軟件在軌更新方法相比,采用該方法顯著減小了上注數據量,降低了上注時間.

3.2 更新出錯試驗

試驗時星上運行版本3程序.為了模擬各類出錯情況,對上注數據出現誤碼、更新的軟件存在缺陷使得程序跑飛、更新過程中整星斷電這3種出錯情況進行模擬.

出錯情況1:上注數據誤碼.在注入數據幀中隨機注入多比特錯誤,再將注入錯誤后的數據上注至衛星,觀察其更新狀態.

出錯情況2:更新軟件存在缺陷使程序跑飛.故意修改版本4代碼使之隨意修改.text段而使程序跑飛,再將該版本的代碼制作成更新補丁上注至衛星,觀察其更新狀態.

出錯情況3:在更新過程中整星斷電.在星上執行更新操作的時候人為重啟整星.一般情況下為單次重啟.在實際中可能會出現更新至上一個版本時仍發生整星斷電的情況,為了更好地模擬實際情況,引入多次重啟操作,即在重啟后的系統恢復過程中,再次實施重啟操作,該重啟操作不斷實施20次,并觀察其更新狀態.

上述出錯試驗的結果如表3所示.結果表明,該方法能夠成功應對各種更新出錯情況,滿足任務需求.

表2 更新補丁應用試驗結果Tab.2 Experiment result of performing updating patch

表3 更新出錯試驗結果Tab.3 Experiment result of exception simulations

4 結 語

本文基于編譯器的增量鏈接特性,提出一種無需重啟、上注數據量小、并且可回滾至更新前狀態的星載軟件在軌更新方法.該方法將更新操作歸結為內存空間的寫入操作和刪除操作,能夠隨意修改或增減星載軟件功能,簡化了補丁的結構和星上監測程序的更新操作過程,并能夠回滾至更新之前的狀態.試驗結果表明,利用本文方法進行更新,補丁上注時間短,更新操作正確,回滾操作有效,并成功應對各種更新出錯情況.本文方法高效可行,具有較好的安全性,可以應用在包括皮衛星在內的各種航天器中.

):

[1]包海超,楊根慶,李華旺.小衛星星載軟件微內核的設計[J].計算機工程,2008,34(9):81-82.BAO Hai-chao,YANG Gen-qing,LI Hua-wang.Micro kernel design of small satellite software[J].Computer Engineering,2008,34(9):81-82.

[2]ZHANG Y,JIANG J.Bibliographical review on reconfigurable fault-tolerant control systems[J].Annual Reviews in Control,2008,32(2):229-252.

[3]LEVESON N G.Role of software in spacecraft accidents[J].Journal of spacecraft and Rockets,2004,41(4):564-575.

[4]張然峰,郝賢鵬,金龍旭,等.空間相機軟件在軌重注方法研究與實現[J].光機電信息,2011,28(6):30-34.ZHANG Ran-feng,HAO Xian-peng,JIN Long-xu,et al.Study and realization on method of software in space camera on-board reprogramming [J].OME Information,2011,28(6):30-34.

[5]ROSA J,CRAVEIRO J,RUFINO J.Exploiting AIR composability towards spacecraft onboard software update[C]∥Actas do INForum-Simposio de Informatica.Braga:[s.n.],2010:675-686.

[6]李磊霞,王宇,林寶軍,等.基于宏定義動態鏈接的模塊化星載軟件升級方法研究[J].空間科學學報,2010,30(2):180-184.LI Lei-xia,WANG Yu,LIN Bao-jun,et al.Research of software updating for micro-satellite in the orbit based on dynamic link with macros[J].Chinese Journal of Space Science,2010,30(2):180-184.

[7]GJB 1198.1A-2004,航天器測控和數據管理第l部分:PCM 遙控[S].北京:國防科學技術工業委員會,2004.

[8]楊牧,王昊,張鈺,等.抗輻射加固的皮衛星用實時操作系統設計[J].浙江大學學報:工學版,2011,45(6):1021-1026.YANG Mu,WANG Hao,ZHANG Yu,et al.Design of radiation-hardened real-time operating system for pico-satellite[J].Journal of Zhejiang University:Engineering Science,2011,45(6):1021-1026.

[9]BUTLER R,PENNOTTI M.The evolution of software and its impact on complex system design in robotic spacecraft embedded systems [J].Procedia Computer Science,2013,16:747-756.

[10]KIM D K,TILEVICH E,RIBBENS C J.Dynamic software updates for parallel high-performance applications[J].Concurrency and Computation:Practice and Experience,2011,23(4):415-434.

[11]NEAMTIU I,HICKS M,STOYLE G,et al.Practical dynamic software updating for C[C]∥Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation. New York:ACM,2006:72-83.

[12]HICKS M,NETTLES S.Dynamic software updating[J].ACM Transactions on Programming Languages and Systems,2005,27(6):1049-1096.

[13]KIM D K,TILEVICH E,RIBBENS C J.Shortening time-to-discovery with dynamic software updates for parallel high performance applications[R].Virginia Tech:Department Of Computer Science,2009.

[14]STEIGER C,FURNELL R,MORALES J.OBSM operations automation through the use of on-board control procedures[C]∥Space OPS 2004Conference.Montreal:AIAA,2004:1-15.

[15]徐偉,樸永杰.航天相機控制器在軌軟件重注[J].光電工程,2013,40(4):65-71.XU Wei,PIAO Yong-jie.Re-injection technology for software in aerospace camera controller on orbit[J].Opto-Electronic Engineering,2013,40(4):65-71.

[16]安軍社,劉艷秋,孫輝先.軟件的動態維護與實現[J].計算機工程,2003,29(2):238-239.AN Jun-she,LIU Yan-qiu,SUN Hui-xian.Implementation of on-board software maintenance[J].Computer Engineering.2003,29(2):238-239.

[17]THI A T,TSO K S,ALKALAI L,et al.On-board guarded software upgrading for space missions[C]∥Proceedings of the 18th Digital Avionics Systems Conference.St Louis:IEEE,1999:7.B.4-1-7.B.4-8.

[18]LI W,ZHANG Y,YANG J,et al.UCC:update-conscious compilation for energy efficiency in wireless sensor networks[C]∥Proceedings of the 2007ACM SIGPLAN Conference on Programming Language Design and Implementation.New York:ACM,2007:383-393.

[19]KIYOHARA R,MII S,MATSUMOTO M,et al.A new method of fast compression of program code for OTA updates in consumer devices[J].IEEE Transactions on Consumer Electronics,2009,55(2):812-817.

[20]BELLAACHIA A,RASSAN I A.Efficiency of prefix and non-prefix codes in string matching over compressed databases on handheld devices[C]∥Proceedings of the 2005 ACM Symposium on Applied Computing.New York:ACM,2005:993-997.

[21]BESZéDES á,FERENC R,GYIMóTHY T,et al.Survey of code-size reduction methods[J].ACM Computing Surveys(CSUR),2003,35(3):223-267.

[22]田祖偉,楊恒伏,羅陽旭.基于增量鏈接的PE文件信息隱藏技術研究[J].計算機科學,2012,39(12):91-93.TIAN Zu-wei, YANG Heng-fu, LUO Yang-xu.Research of PE file information hiding based on incremental link[J].Computer Science,2012,39(12):91-93.

[23]TIS C.Executable and linking format(ELF)specification[S].[S.l.]:Tool Interface Standard Committee,1995.

[24]何熊文.一種通用遙控注入數據格式的設計與應用[J].航天器工程,2008,17(1):94-99.HE Xiong-wen.Design and application of a common spacecraft telecommand data format [J].Spacecraft Engineering,2008,17(1):94-99.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 一级一级一片免费| 污污网站在线观看| 久久综合亚洲鲁鲁九月天| 婷婷丁香色| 99在线观看国产| 永久免费精品视频| 99久久国产综合精品2020| 精品久久国产综合精麻豆| 欧美日韩亚洲综合在线观看| 亚洲精品无码AV电影在线播放| 国产亚洲现在一区二区中文| 中文字幕人妻av一区二区| 午夜不卡视频| 综合色亚洲| 亚洲精品欧美日本中文字幕 | 亚洲无码一区在线观看| 福利视频久久| 精品1区2区3区| 亚洲日韩每日更新| 国产99热| 97一区二区在线播放| 久久精品无码国产一区二区三区| 亚洲视频二| 制服无码网站| 久久99蜜桃精品久久久久小说| 亚洲女同一区二区| 亚洲成人动漫在线观看 | 亚洲综合狠狠| 四虎国产精品永久一区| 国产极品粉嫩小泬免费看| 亚洲午夜国产精品无卡| 日韩成人高清无码| 91麻豆久久久| 麻豆国产在线观看一区二区| 国产女人18毛片水真多1| 亚洲人成电影在线播放| 五月婷婷综合色| 国产女同自拍视频| 成人福利在线视频| 国产福利不卡视频| 亚洲中文字幕久久精品无码一区 | 女人毛片a级大学毛片免费| 婷婷色在线视频| 免费日韩在线视频| 国产成人亚洲欧美激情| 亚洲精品国产综合99| 欧美三级视频在线播放| 99ri精品视频在线观看播放| 日本精品αv中文字幕| 中文字幕无码av专区久久| 亚洲无码在线午夜电影| a级毛片毛片免费观看久潮| 国产女人18水真多毛片18精品| 国产不卡在线看| 久久精品无码专区免费| 久久国产av麻豆| 国产在线精品99一区不卡| 老熟妇喷水一区二区三区| 欧美色伊人| 国产午夜无码片在线观看网站| 欧美成人怡春院在线激情| 四虎国产精品永久一区| 九月婷婷亚洲综合在线| 视频一区亚洲| 人人澡人人爽欧美一区| 中文字幕在线播放不卡| 无码人中文字幕| 亚洲精品久综合蜜| 国产色网站| 高清精品美女在线播放| 久久久久免费精品国产| 特级精品毛片免费观看| 丝袜亚洲综合| 久久中文字幕av不卡一区二区| 久久人与动人物A级毛片| 在线观看91香蕉国产免费| 亚洲国产综合精品中文第一| 最新国产高清在线| 色135综合网| 欧美日韩国产系列在线观看| 精品乱码久久久久久久| 日本高清成本人视频一区|