一分鐘遷移匯編代碼:鯤鵬DevKit中匯編翻譯特性的應(yīng)用和實(shí)現(xiàn)_第1頁
一分鐘遷移匯編代碼:鯤鵬DevKit中匯編翻譯特性的應(yīng)用和實(shí)現(xiàn)_第2頁
一分鐘遷移匯編代碼:鯤鵬DevKit中匯編翻譯特性的應(yīng)用和實(shí)現(xiàn)_第3頁
一分鐘遷移匯編代碼:鯤鵬DevKit中匯編翻譯特性的應(yīng)用和實(shí)現(xiàn)_第4頁
一分鐘遷移匯編代碼:鯤鵬DevKit中匯編翻譯特性的應(yīng)用和實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

一分鐘遷移匯編代碼:鯤鵬DevKit中匯編翻譯特性的應(yīng)用和實(shí)現(xiàn)?待遷移的匯編代碼?匯編翻譯的意義和挑戰(zhàn)?匯編翻譯的應(yīng)用和實(shí)現(xiàn)?總結(jié)和展望鯤鵬DevKit:一站式開發(fā)套件分布式存儲Web數(shù)據(jù)庫虛擬化大數(shù)據(jù)(分布式存儲Web數(shù)據(jù)庫虛擬化大數(shù)據(jù)(openLooKeng)云手機(jī)鯤鵬開發(fā)套件KunpengDevKit應(yīng)用開發(fā)系統(tǒng)軟件開發(fā)硬件開放…使能代碼遷移工具編譯器性能分析工具 處理器SSD鯤鵬主板網(wǎng)卡代碼遷移工具編譯器性能分析工具移速庫插件高效遷移工具移速庫插件高效遷移工具全面分析精準(zhǔn)調(diào)優(yōu)試工具快速診斷準(zhǔn)確定位有源碼遷移工具化插件與IDE開發(fā)環(huán)境集成鯤鵬DevKit:全流程開發(fā)效率提升一站式遷移、編譯、測試、分析試插件鯤鵬親和性能更高無源碼遷移平滑遷移、業(yè)務(wù)無損華為動態(tài)二進(jìn)制翻譯工具(ExaGear)難懂難懂難調(diào)匯編代碼?匯編語言(Assemblylanguage)是任何一種計(jì)算機(jī)或其他可編程器件的低級語言。在不同的設(shè)備中,匯編語言對應(yīng)著不同的機(jī)器語言指令集。一種匯編語言專用于某種計(jì)算機(jī)系統(tǒng)結(jié)構(gòu),如x86_64或AArch64匯編。?為何仍使用匯編性能匯編樣式簡單嵌入?yún)R編(單指令)復(fù)雜嵌入?yún)R編(多指令)語法格式錯(cuò)綜復(fù)雜全匯編文件工具化翻譯匯編樣式多樣性工具化翻譯匯編樣式多樣性能衰減控制意義和挑戰(zhàn)?匯編代碼:軟件跨平臺的“攔路虎”?x86到鯤鵬平臺匯編自動翻譯的挑戰(zhàn)平臺差平臺差異巨大嵌入?yún)R編:使用都較簡單,指令也比較集中嵌入?yún)R編:使用都較簡單,指令也比較集中使用場景全全匯編文件:SIMD指令占大多數(shù),指令相對集中總體思路 (大多數(shù)場景且性能盡量不衰減)基于特征規(guī)則的自動轉(zhuǎn)換基于規(guī)則的快速匯編轉(zhuǎn)換(簡單嵌入?yún)R編)二進(jìn)制代碼 (x86- 64)二進(jìn)制代碼 (AArch64)總體設(shè)計(jì)?匯編樣式復(fù)雜?平臺間差異大?目標(biāo)要求很高能用則用需改盡改?當(dāng)快則快?曲折前行基于編譯技術(shù)的自動轉(zhuǎn)換匯編源代碼 (匯編源代碼 (x86-64) (AArch64)編譯器中間表示翻譯 (SIMD為主)x86=>ARMOutputListGCCAsmstatAsmStringInputListOutputListGCCAsmstatAsmStringInputListAST關(guān)鍵節(jié)點(diǎn)?Clang-Tidy:基于LLVM的靜態(tài)語法檢查框架,提供語法(AST)解析能力?基于Clang-Tidy拓展匯編識別和替換規(guī)則CVariableSymbolOperandE0->[arg]->vCVariableSymbolOperandE0->[arg]->vE1->[storage]-s簡單嵌入?yún)R編翻譯待轉(zhuǎn)換x待轉(zhuǎn)換x86嵌入式匯編__asm__volatile__(“l(fā)ock;orq%[arg],%[storage]\n\t”:[stoarge]“+m”(s):“memory”);規(guī)則庫模板Instwidth:q(64bit)Prefix:lockCFlags:null轉(zhuǎn)換規(guī)則庫匹配TRANS_RULE(OR)TRANS_RULE(LOCK_OR)TRANS_RULE(LOCK_OR_NZ)__atomic_fetch_or(&s,v,__ATOMIC_SEQ_CET);1.指令操作數(shù)映射2.匯編語句特征分析(綁定步驟1)3.規(guī)則庫規(guī)則匹配(綁定步驟2)4.根據(jù)規(guī)則進(jìn)行代碼翻譯指令語義:對E0和E1兩個(gè)操作數(shù)按位或運(yùn)算,結(jié)果寫入E1基于編譯技術(shù)的自動轉(zhuǎn)換基于特征規(guī)則的自動轉(zhuǎn)換匯編源代基于編譯技術(shù)的自動轉(zhuǎn)換基于特征規(guī)則的自動轉(zhuǎn)換匯編源代碼 (x86-64)匯編源代碼 (AArch64)基于規(guī)則的快速匯編轉(zhuǎn)換(簡單嵌入?yún)R編)二進(jìn)制代碼 (x86- 64)編譯器中間表示翻譯 (SIMD為主)二進(jìn)制代碼 (AArch64)1.指令組合無法窮舉2.匯編模塊引用外部變量3.消除平臺間調(diào)用差異4.SIMD指令對等翻譯翻譯步驟對挑戰(zhàn)局部異構(gòu)反編譯譯優(yōu)化4指令直接翻譯4代碼生成2x86機(jī)器狀態(tài)的抽象x86機(jī)器狀態(tài)的抽象:structState{VectorRegvec[kNumVecRegisters];//向量寄存器xmm/ymm/zmm結(jié)構(gòu)定義GPRgpr;//通用寄存器rax/rbx…結(jié)構(gòu)定義X87Stackst;MMXmmx;FPUx87;FPUStatusFlagssw;}__.ttribute__((packed));復(fù)雜匯編翻譯:指令語義轉(zhuǎn)譯x86機(jī)器模型抽象?機(jī)器狀態(tài)抽象為數(shù)據(jù)結(jié)構(gòu),內(nèi)存被抽象為一段大數(shù)空間?所有匯編指令語義,都被翻譯成對機(jī)器模型的操作x86指令的轉(zhuǎn)譯過程?每條指令對應(yīng)語義函數(shù)(用高級語言編程),經(jīng)編譯器編譯為編譯器中間表示?輸入?yún)R編指令解碼后,生成對語義函數(shù)調(diào)用,經(jīng)編譯器優(yōu)化為最優(yōu)代碼paddwpaddw指C++語義函數(shù)引入vectorextension描述SIMD指令語義xx86匯編指令串其他指令SIMD指令使用Vectorextension描述SIMD指令的操作數(shù)變量Vectorextension普通C++接口語義實(shí)現(xiàn)x86匯編翻譯后的翻譯后的SIMD指令語義編譯器編譯復(fù)雜匯編翻譯:參數(shù)化翻譯主主要是為了解決C語言變量和匯編代碼的關(guān)聯(lián)x86嵌入?yún)R編指令串高級語言變量列表逐條翻譯指令串,引用參數(shù)化的虛擬寄存器被翻譯的x86指令串(函數(shù)聲明)參數(shù)ARG0_64被翻譯的x86指令串(函數(shù)定義)引導(dǎo)代碼(關(guān)聯(lián)C變量和函數(shù)參數(shù))被翻譯的x86指令串 (函數(shù)定義)引導(dǎo)代碼生成參數(shù)化翻譯參數(shù)ARG1_64x86嵌入?yún)R編入實(shí)例參數(shù)化入實(shí)例模擬寄存器 (模擬寄存器 (State結(jié)構(gòu))x86-64模擬環(huán)境棧底棧頂模擬棧 (內(nèi)存結(jié)構(gòu))0x00000x00080x0010lee返回地址x86-64AArch64入?yún)⒓拇嫫鱎DIRSI,RDX,RCX,R8,R9x0-x7返回值寄存器xx30//C函數(shù)Caller()調(diào)用匯編函數(shù)Callee()Caller(){…res=Callee(i1,i2,i3,…,i8);…}復(fù)雜匯編翻譯:函數(shù)跳轉(zhuǎn)和調(diào)用約定主要解決C語言接口和匯編接口之間的調(diào)用問題C函數(shù)調(diào)用匯編模塊中的函數(shù)Callee時(shí)的狀態(tài)切換AArch64物理環(huán)境寄存器程序棧棧底棧頂xX30Callee返原始x86匯編截圖翻譯后鯤鵬匯編截圖x86結(jié)果原始x86匯編截圖翻譯后鯤鵬匯編截圖x86結(jié)果X86X86匯編代碼自動翻譯:一分鐘搞定x86匯編代碼遷移到鯤鵬平臺?指令語義的眾籌?更多場景的支持?新硬件指令支持you.把數(shù)字世界帶入每個(gè)人、每個(gè)家庭、每個(gè)組織,構(gòu)建萬物互聯(lián)的智能世界。Bringdigitaltoeveryperson,homeandorganizationforafullyconnected,intelligentworld.Copyright?2020HuaweiTechnologiesCo.,Ltd.AllRightsReserved.Theinformationinthisdocumentmaycontainpredictivestatementsincluding,withoutlimitation,statementsregardingthefuturefinancialandoperatingresults,futureproductportfolio,newtechnology,etc.Thereareanumberoffactorsthatcouldcauseactualresultsanddevelopmentstodiffermateriallyfromthoseexpressedorimpliedinthepredictivestatements.T

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論