基于ARM嵌入式应用平台的x86指令译码器设计
发布时间:2021-08-09 00:53
传统的计算机软件与下层的机器平台有着强烈的依赖关系,针对一个机器平台编译的程序不能运行在其他平台上。随着新的体系结构和操作系统的不断涌现,对计算机系统间的互操作性要求也越来越高。二进制翻译技术可以将一种ISA (Instruction Set Architecture)的二进制机器码翻译到另一种ISA的二进制机器码,从而实现原有应用程序到一种新的硬件平台的移植。为了有效的实现PC处理器主流的x86系列程序与ARM系列处理器之间的兼容性和可移植性,本文首先研究了x86和ARM两种处理器的架构、指令寻址方式和指令编码。然后提出了一种32位x86指令到ARM指令的静态二进制翻译的硬件实现方法,用Verilog硬件描述语言实现了进行静态二进制翻译的核心模块Decoder模块,能够处理130多条x86指令,并且对适用Decoder模块的x86汇编程序和ARM架构提出了限制条件。同时设计了一个TLB模块,可实现x86指令的匹配并直接输出存储的ARM指令,从而提高整个译码系统的吞吐量。最后将该译码模块成功的集成到基于ARM核的SoC上进行系统验证。目前译码模块还存在很多不足之处,在以后的研究工作中,...
【文章来源】:上海交通大学上海市 211工程院校 985工程院校 教育部直属院校
【文章页数】:78 页
【学位级别】:硕士
【部分图文】:
静态二进制翻译器Fig.1-1StaticBinaryTranslator
图 1-2 动态二进制翻译器工作流程Fig.1-2 Dynamic Binary Translator Work Flow1.1.3 两种翻译技术的比较静态翻译是代码执行前的翻译,相当于静态编译过程。动态翻译是代码执行时的翻译,在完成代码翻译的同时,根据代码运行时的特性进行优化。再翻译和优化就是动态翻译的实质。静态翻译方式下,基准ISA二进制程序和目标ISA二进制程序基本是孤立的,因此它存在一些问题:① 对于操作系统这样的大程序难以完成翻译;② 代码识别困难;③ 无法预知程序的动态输人及动态运行情况;④ 不能进行精确中断定位;⑤ 没有解决间接跳转/间接调用自修改代码等问题。动态翻译是代码执行时的翻译,翻译前后的二进制并不完全孤立。它在翻译初始目标机器码、执行生成目标机器码两个阶段交替运行,完成非目标机器代码在目标机器上的运行,并对频繁执行的代码进行优化,重新生成更合适的代码。它可以解决静态翻译的一些缺点,能发掘静态翻译所不能的动态优化机会,并且可以做到对用户完全透明,无需用户干预。因为目前绝大部分的二进制翻译技术都是用软件的方式实现的,静态翻译速度较慢,而且缺乏透明
2.4 80x86 指令格式80x86 处理器指令编码格式如图 2-3 所示,图中,一条 x86 指令包含如下分:指令前缀 Instruction Prefixes,最多可以有 4 Byte指令前缀,也可以没有。通常用段前缀指定内存寻址的段寄存器。操作码 Opcode,占用 1 Byte或 2 Byte,决定指令的操作类型。具体操作的编码需要参见[7]中的 x86指令操作码表,在此不做过多说明。ModR/M 字节,决定指令的寻址方式和寄存器,有时其[5:3]位也作为操作码。SIB 字节,当指令为相对基址变址寻址或带比例因子的内存寻址时,该字决定比例因子、基址寄存器和变址寄存器。Displacement,可以为 1 Byte、2 Byte 或 4 Byte,为有符号的地址偏移量。Immediate,可以为 1 Byte、2 Byte 或 4 Byte,为有符号的立即数。
【参考文献】:
期刊论文
[1]零知识数字签名方案中Hash值长度的研究[J]. 王平水. 计算机技术与发展. 2007(06)
本文编号:3331025
【文章来源】:上海交通大学上海市 211工程院校 985工程院校 教育部直属院校
【文章页数】:78 页
【学位级别】:硕士
【部分图文】:
静态二进制翻译器Fig.1-1StaticBinaryTranslator
图 1-2 动态二进制翻译器工作流程Fig.1-2 Dynamic Binary Translator Work Flow1.1.3 两种翻译技术的比较静态翻译是代码执行前的翻译,相当于静态编译过程。动态翻译是代码执行时的翻译,在完成代码翻译的同时,根据代码运行时的特性进行优化。再翻译和优化就是动态翻译的实质。静态翻译方式下,基准ISA二进制程序和目标ISA二进制程序基本是孤立的,因此它存在一些问题:① 对于操作系统这样的大程序难以完成翻译;② 代码识别困难;③ 无法预知程序的动态输人及动态运行情况;④ 不能进行精确中断定位;⑤ 没有解决间接跳转/间接调用自修改代码等问题。动态翻译是代码执行时的翻译,翻译前后的二进制并不完全孤立。它在翻译初始目标机器码、执行生成目标机器码两个阶段交替运行,完成非目标机器代码在目标机器上的运行,并对频繁执行的代码进行优化,重新生成更合适的代码。它可以解决静态翻译的一些缺点,能发掘静态翻译所不能的动态优化机会,并且可以做到对用户完全透明,无需用户干预。因为目前绝大部分的二进制翻译技术都是用软件的方式实现的,静态翻译速度较慢,而且缺乏透明
2.4 80x86 指令格式80x86 处理器指令编码格式如图 2-3 所示,图中,一条 x86 指令包含如下分:指令前缀 Instruction Prefixes,最多可以有 4 Byte指令前缀,也可以没有。通常用段前缀指定内存寻址的段寄存器。操作码 Opcode,占用 1 Byte或 2 Byte,决定指令的操作类型。具体操作的编码需要参见[7]中的 x86指令操作码表,在此不做过多说明。ModR/M 字节,决定指令的寻址方式和寄存器,有时其[5:3]位也作为操作码。SIB 字节,当指令为相对基址变址寻址或带比例因子的内存寻址时,该字决定比例因子、基址寄存器和变址寄存器。Displacement,可以为 1 Byte、2 Byte 或 4 Byte,为有符号的地址偏移量。Immediate,可以为 1 Byte、2 Byte 或 4 Byte,为有符号的立即数。
【参考文献】:
期刊论文
[1]零知识数字签名方案中Hash值长度的研究[J]. 王平水. 计算机技术与发展. 2007(06)
本文编号:3331025
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/3331025.html