新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于X86平台的ARM指令集模拟器的设计

基于X86平台的ARM指令集模拟器的设计

作者:时间:2016-10-10来源:网络收藏

2.4 指令集的内核设计
内核结构如图5所示。

本文引用地址:http://www.eepw.com.cn/article/201610/306034.htm

e.JPG


2.4.1 内核解码模块设计
指令内核中的解码模块包括取指令模型和指令转换模型两部分内容,取指令模型介绍了内核程序如何从加载的目标代码中取出逐条指令,指令转换模型介绍了取出的逐条指令是如何转换成中间语言指令来实现的。
1)取指令模型
本文设计的模拟器中取指令模型结构如图6所示,包括指令计数器、指令格式解析器、指令格式解析器、取指令逻辑控制器和指令地址更新逻辑。指令计数器是处理器都会有的一个寄存器。不同的处理器有不同的表现形式。

f.JPG


2)指令的转换模型
指令译码就是根据指令集编码,将要执行的指令译成操作码、操作数、条件码等指令仿真需要的信息。译码的重点在于获取不同寻址方式下的操作数,通过分析指令字助记符和指令码,可以很方便地得到不同寻址方式的操作数。由于本文设计的指令集虚拟模拟的指令集,所以加入指令转换模型,指令转换是将一条目标机器指令转换为一条或几条中间可执行指令集的过程。转换工作由指令转换器完成。其工作模型如图7所示,一条源指令经过指令译码模块翻译,生成一系列的中间语言队列,在本模拟器中,中间语言就是能在平台上运行的汇编语言。

g.JPG


2.4.2 内核指令模拟与调度模块
指令调度就是把指令字与完成相应操作的功能函数对应起来,使得仿真时取到该指令后能知道该调用哪个执行过程。本文是基于传统的解释型仿真策略,其主体是一个大的switch结构,并使用case语句。这种设计模型会影响模拟速度,由于case语句的种类非常多,所以在今后的工作中,这里将会是一个重点的研究对象,可以采用hash结构、压缩算法或者指令缓存来提高指令译码的执行效率,这也将会是模拟器的整体执行效率得到一个很大的提高。
指令模拟执行模块把指令分类处理并采用数据获取和数据操作相分离的方法,使得执行函数更具有通用性,当新的指令系统添加时,只需要添加相应的寻址方式和原系统中没有的指令执行过程,就能完成添加指令集的操作,提高了系统设计的可扩展性。

3 结束语
本文是针对嵌入式开发现阶段的主要存在的问题,即传统低下的开发效率和当下对较短市场开发周期的要求之间的矛盾,提出了ARM指令集模拟器的设计和实现方法。以及对指令集模拟技术的介绍和掌握。目前,与嵌入式系统相关的软件开发复杂度越来越高,因此指令集模拟器的发展前景十分乐观。


上一页 1 2 3 下一页

关键词: X86 ARM 模拟器

评论


相关推荐

技术专区

关闭