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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

一分鐘遷移匯編代碼:鯤鵬DevKit中匯編翻譯特性的應用和實現(xiàn)?待遷移的匯編代碼?匯編翻譯的意義和挑戰(zhàn)?匯編翻譯的應用和實現(xiàn)?總結和展望鯤鵬DevKit:一站式開發(fā)套件分布式存儲Web數(shù)據(jù)庫虛擬化大數(shù)據(jù)(分布式存儲Web數(shù)據(jù)庫虛擬化大數(shù)據(jù)(openLooKeng)云手機鯤鵬開發(fā)套件KunpengDevKit應用開發(fā)系統(tǒng)軟件開發(fā)硬件開放…使能代碼遷移工具編譯器性能分析工具 處理器SSD鯤鵬主板網(wǎng)卡代碼遷移工具編譯器性能分析工具移速庫插件高效遷移工具移速庫插件高效遷移工具全面分析精準調(diào)優(yōu)試工具快速診斷準確定位有源碼遷移工具化插件與IDE開發(fā)環(huán)境集成鯤鵬DevKit:全流程開發(fā)效率提升一站式遷移、編譯、測試、分析試插件鯤鵬親和性能更高無源碼遷移平滑遷移、業(yè)務無損華為動態(tài)二進制翻譯工具(ExaGear)難懂難懂難調(diào)匯編代碼?匯編語言(Assemblylanguage)是任何一種計算機或其他可編程器件的低級語言。在不同的設備中,匯編語言對應著不同的機器語言指令集。一種匯編語言專用于某種計算機系統(tǒng)結構,如x86_64或AArch64匯編。?為何仍使用匯編性能匯編樣式簡單嵌入?yún)R編(單指令)復雜嵌入?yún)R編(多指令)語法格式錯綜復雜全匯編文件工具化翻譯匯編樣式多樣性工具化翻譯匯編樣式多樣性能衰減控制意義和挑戰(zhàn)?匯編代碼:軟件跨平臺的“攔路虎”?x86到鯤鵬平臺匯編自動翻譯的挑戰(zhàn)平臺差平臺差異巨大嵌入?yún)R編:使用都較簡單,指令也比較集中嵌入?yún)R編:使用都較簡單,指令也比較集中使用場景全全匯編文件:SIMD指令占大多數(shù),指令相對集中總體思路 (大多數(shù)場景且性能盡量不衰減)基于特征規(guī)則的自動轉換基于規(guī)則的快速匯編轉換(簡單嵌入?yún)R編)二進制代碼 (x86- 64)二進制代碼 (AArch64)總體設計?匯編樣式復雜?平臺間差異大?目標要求很高能用則用需改盡改?當快則快?曲折前行基于編譯技術的自動轉換匯編源代碼 (匯編源代碼 (x86-64) (AArch64)編譯器中間表示翻譯 (SIMD為主)x86=>ARMOutputListGCCAsmstatAsmStringInputListOutputListGCCAsmstatAsmStringInputListAST關鍵節(jié)點?Clang-Tidy:基于LLVM的靜態(tài)語法檢查框架,提供語法(AST)解析能力?基于Clang-Tidy拓展匯編識別和替換規(guī)則CVariableSymbolOperandE0->[arg]->vCVariableSymbolOperandE0->[arg]->vE1->[storage]-s簡單嵌入?yún)R編翻譯待轉換x待轉換x86嵌入式匯編__asm__volatile__(“l(fā)ock;orq%[arg],%[storage]\n\t”:[stoarge]“+m”(s):“memory”);規(guī)則庫模板Instwidth:q(64bit)Prefix:lockCFlags:null轉換規(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ī)則進行代碼翻譯指令語義:對E0和E1兩個操作數(shù)按位或運算,結果寫入E1基于編譯技術的自動轉換基于特征規(guī)則的自動轉換匯編源代基于編譯技術的自動轉換基于特征規(guī)則的自動轉換匯編源代碼 (x86-64)匯編源代碼 (AArch64)基于規(guī)則的快速匯編轉換(簡單嵌入?yún)R編)二進制代碼 (x86- 64)編譯器中間表示翻譯 (SIMD為主)二進制代碼 (AArch64)1.指令組合無法窮舉2.匯編模塊引用外部變量3.消除平臺間調(diào)用差異4.SIMD指令對等翻譯翻譯步驟對挑戰(zhàn)局部異構反編譯譯優(yōu)化4指令直接翻譯4代碼生成2x86機器狀態(tài)的抽象x86機器狀態(tài)的抽象:structState{VectorRegvec[kNumVecRegisters];//向量寄存器xmm/ymm/zmm結構定義GPRgpr;//通用寄存器rax/rbx…結構定義X87Stackst;MMXmmx;FPUx87;FPUStatusFlagssw;}__.ttribute__((packed));復雜匯編翻譯:指令語義轉譯x86機器模型抽象?機器狀態(tài)抽象為數(shù)據(jù)結構,內(nèi)存被抽象為一段大數(shù)空間?所有匯編指令語義,都被翻譯成對機器模型的操作x86指令的轉譯過程?每條指令對應語義函數(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++接口語義實現(xiàn)x86匯編翻譯后的翻譯后的SIMD指令語義編譯器編譯復雜匯編翻譯:參數(shù)化翻譯主主要是為了解決C語言變量和匯編代碼的關聯(lián)x86嵌入?yún)R編指令串高級語言變量列表逐條翻譯指令串,引用參數(shù)化的虛擬寄存器被翻譯的x86指令串(函數(shù)聲明)參數(shù)ARG0_64被翻譯的x86指令串(函數(shù)定義)引導代碼(關聯(lián)C變量和函數(shù)參數(shù))被翻譯的x86指令串 (函數(shù)定義)引導代碼生成參數(shù)化翻譯參數(shù)ARG1_64x86嵌入?yún)R編入實例參數(shù)化入實例模擬寄存器 (模擬寄存器 (State結構)x86-64模擬環(huán)境棧底棧頂模擬棧 (內(nèi)存結構)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);…}復雜匯編翻譯:函數(shù)跳轉和調(diào)用約定主要解決C語言接口和匯編接口之間的調(diào)用問題C函數(shù)調(diào)用匯編模塊中的函數(shù)Callee時的狀態(tài)切換AArch64物理環(huán)境寄存器程序棧棧底棧頂xX30Callee返原始x86匯編截圖翻譯后鯤鵬匯編截圖x86結果原始x86匯編截圖翻譯后鯤鵬匯編截圖x86結果X86X86匯編代碼自動翻譯:一分鐘搞定x86匯編代碼遷移到鯤鵬平臺?指令語義的眾籌?更多場景的支持?新硬件指令支持you.把數(shù)字世界帶入每個人、每個家庭、每個組織,構建萬物互聯(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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論