基于ARM嵌入式應(yīng)用平臺的x86指令譯碼器設(shè)計
發(fā)布時間:2021-08-09 00:53
傳統(tǒng)的計算機軟件與下層的機器平臺有著強烈的依賴關(guān)系,針對一個機器平臺編譯的程序不能運行在其他平臺上。隨著新的體系結(jié)構(gòu)和操作系統(tǒng)的不斷涌現(xiàn),對計算機系統(tǒng)間的互操作性要求也越來越高。二進制翻譯技術(shù)可以將一種ISA (Instruction Set Architecture)的二進制機器碼翻譯到另一種ISA的二進制機器碼,從而實現(xiàn)原有應(yīng)用程序到一種新的硬件平臺的移植。為了有效的實現(xiàn)PC處理器主流的x86系列程序與ARM系列處理器之間的兼容性和可移植性,本文首先研究了x86和ARM兩種處理器的架構(gòu)、指令尋址方式和指令編碼。然后提出了一種32位x86指令到ARM指令的靜態(tài)二進制翻譯的硬件實現(xiàn)方法,用Verilog硬件描述語言實現(xiàn)了進行靜態(tài)二進制翻譯的核心模塊Decoder模塊,能夠處理130多條x86指令,并且對適用Decoder模塊的x86匯編程序和ARM架構(gòu)提出了限制條件。同時設(shè)計了一個TLB模塊,可實現(xiàn)x86指令的匹配并直接輸出存儲的ARM指令,從而提高整個譯碼系統(tǒng)的吞吐量。最后將該譯碼模塊成功的集成到基于ARM核的SoC上進行系統(tǒng)驗證。目前譯碼模塊還存在很多不足之處,在以后的研究工作中,...
【文章來源】:上海交通大學(xué)上海市 211工程院校 985工程院校 教育部直屬院校
【文章頁數(shù)】:78 頁
【學(xué)位級別】:碩士
【部分圖文】:
靜態(tài)二進制翻譯器Fig.1-1StaticBinaryTranslator
圖 1-2 動態(tài)二進制翻譯器工作流程Fig.1-2 Dynamic Binary Translator Work Flow1.1.3 兩種翻譯技術(shù)的比較靜態(tài)翻譯是代碼執(zhí)行前的翻譯,相當于靜態(tài)編譯過程。動態(tài)翻譯是代碼執(zhí)行時的翻譯,在完成代碼翻譯的同時,根據(jù)代碼運行時的特性進行優(yōu)化。再翻譯和優(yōu)化就是動態(tài)翻譯的實質(zhì)。靜態(tài)翻譯方式下,基準ISA二進制程序和目標ISA二進制程序基本是孤立的,因此它存在一些問題:① 對于操作系統(tǒng)這樣的大程序難以完成翻譯;② 代碼識別困難;③ 無法預(yù)知程序的動態(tài)輸人及動態(tài)運行情況;④ 不能進行精確中斷定位;⑤ 沒有解決間接跳轉(zhuǎn)/間接調(diào)用自修改代碼等問題。動態(tài)翻譯是代碼執(zhí)行時的翻譯,翻譯前后的二進制并不完全孤立。它在翻譯初始目標機器碼、執(zhí)行生成目標機器碼兩個階段交替運行,完成非目標機器代碼在目標機器上的運行,并對頻繁執(zhí)行的代碼進行優(yōu)化,重新生成更合適的代碼。它可以解決靜態(tài)翻譯的一些缺點,能發(fā)掘靜態(tài)翻譯所不能的動態(tài)優(yōu)化機會,并且可以做到對用戶完全透明,無需用戶干預(yù)。因為目前絕大部分的二進制翻譯技術(shù)都是用軟件的方式實現(xiàn)的,靜態(tài)翻譯速度較慢,而且缺乏透明
2.4 80x86 指令格式80x86 處理器指令編碼格式如圖 2-3 所示,圖中,一條 x86 指令包含如下分:指令前綴 Instruction Prefixes,最多可以有 4 Byte指令前綴,也可以沒有。通常用段前綴指定內(nèi)存尋址的段寄存器。操作碼 Opcode,占用 1 Byte或 2 Byte,決定指令的操作類型。具體操作的編碼需要參見[7]中的 x86指令操作碼表,在此不做過多說明。ModR/M 字節(jié),決定指令的尋址方式和寄存器,有時其[5:3]位也作為操作碼。SIB 字節(jié),當指令為相對基址變址尋址或帶比例因子的內(nèi)存尋址時,該字決定比例因子、基址寄存器和變址寄存器。Displacement,可以為 1 Byte、2 Byte 或 4 Byte,為有符號的地址偏移量。Immediate,可以為 1 Byte、2 Byte 或 4 Byte,為有符號的立即數(shù)。
【參考文獻】:
期刊論文
[1]零知識數(shù)字簽名方案中Hash值長度的研究[J]. 王平水. 計算機技術(shù)與發(fā)展. 2007(06)
本文編號:3331025
【文章來源】:上海交通大學(xué)上海市 211工程院校 985工程院校 教育部直屬院校
【文章頁數(shù)】:78 頁
【學(xué)位級別】:碩士
【部分圖文】:
靜態(tài)二進制翻譯器Fig.1-1StaticBinaryTranslator
圖 1-2 動態(tài)二進制翻譯器工作流程Fig.1-2 Dynamic Binary Translator Work Flow1.1.3 兩種翻譯技術(shù)的比較靜態(tài)翻譯是代碼執(zhí)行前的翻譯,相當于靜態(tài)編譯過程。動態(tài)翻譯是代碼執(zhí)行時的翻譯,在完成代碼翻譯的同時,根據(jù)代碼運行時的特性進行優(yōu)化。再翻譯和優(yōu)化就是動態(tài)翻譯的實質(zhì)。靜態(tài)翻譯方式下,基準ISA二進制程序和目標ISA二進制程序基本是孤立的,因此它存在一些問題:① 對于操作系統(tǒng)這樣的大程序難以完成翻譯;② 代碼識別困難;③ 無法預(yù)知程序的動態(tài)輸人及動態(tài)運行情況;④ 不能進行精確中斷定位;⑤ 沒有解決間接跳轉(zhuǎn)/間接調(diào)用自修改代碼等問題。動態(tài)翻譯是代碼執(zhí)行時的翻譯,翻譯前后的二進制并不完全孤立。它在翻譯初始目標機器碼、執(zhí)行生成目標機器碼兩個階段交替運行,完成非目標機器代碼在目標機器上的運行,并對頻繁執(zhí)行的代碼進行優(yōu)化,重新生成更合適的代碼。它可以解決靜態(tài)翻譯的一些缺點,能發(fā)掘靜態(tài)翻譯所不能的動態(tài)優(yōu)化機會,并且可以做到對用戶完全透明,無需用戶干預(yù)。因為目前絕大部分的二進制翻譯技術(shù)都是用軟件的方式實現(xiàn)的,靜態(tài)翻譯速度較慢,而且缺乏透明
2.4 80x86 指令格式80x86 處理器指令編碼格式如圖 2-3 所示,圖中,一條 x86 指令包含如下分:指令前綴 Instruction Prefixes,最多可以有 4 Byte指令前綴,也可以沒有。通常用段前綴指定內(nèi)存尋址的段寄存器。操作碼 Opcode,占用 1 Byte或 2 Byte,決定指令的操作類型。具體操作的編碼需要參見[7]中的 x86指令操作碼表,在此不做過多說明。ModR/M 字節(jié),決定指令的尋址方式和寄存器,有時其[5:3]位也作為操作碼。SIB 字節(jié),當指令為相對基址變址尋址或帶比例因子的內(nèi)存尋址時,該字決定比例因子、基址寄存器和變址寄存器。Displacement,可以為 1 Byte、2 Byte 或 4 Byte,為有符號的地址偏移量。Immediate,可以為 1 Byte、2 Byte 或 4 Byte,為有符號的立即數(shù)。
【參考文獻】:
期刊論文
[1]零知識數(shù)字簽名方案中Hash值長度的研究[J]. 王平水. 計算機技術(shù)與發(fā)展. 2007(06)
本文編號:3331025
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/3331025.html
最近更新
教材專著