SimpleScalar指令模板的修改说明.DOC

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SimpleScalar指令模板的修改说明

SimpleScalar修改简要提示 我们主要针对sim-safe模拟器进行一些介绍。 SimpleScalar提供的一系列模拟器中,简单指令级模拟器sim-safe的模拟流程如下: 其中主要环节的过程如下: 1. 取指 sim-safe调用MD_FETCH_INST宏,以程序计数器(以下简称PC寄存器)值为索引,在sim-safe模拟的内存空间中取出下一条指令。 2. 译码 sim-safe调用MD_SET_OPCODE宏完成译码过程。sim-safe曾在初始化时调用md_init_decoder函数初始化指令译码表,能够识别的指令都在这个指令译码表中有相应的下标。译码结束后,就能够得到该指令对应的数组下标,并能够获取这个数组下标内的OP值。 3. 模拟执行 负责模拟指令执行的文件(sim-safe.c)中对DEFLINK、CONNECT和DEFINST的定义如下: #define DEFINST(OP,MSK,NAME,OPFORM,RES,FLAGS,O1,O2,O3,I1,I2,I3,I4) \ case OP: \ SYMCAT(OP,_IMPL) \ break; #define DEFLINK(OP,MSK,NAME,MASK,SHIFT) \ case OP: \ panic(attempted to execute a linking opcode); #define CONNECT(OP) #include machine.def 其中,DEFLINK、CONNECT、DEFINST和OP_IMPL宏在指令模板machine.def文件中定义,这些宏的作用可以参看程序或SimpleScalar的文档。SYMCAT宏的作用就是连接OP和_IMPL。 sim-safe在译码过程结束后,已解析出取指阶段取得的指令对应的OP值,指令的模拟执行过程就是执行指令模板中对应该OP的OP_IMPL中的语句。如果OP_IMPL中的语句没有改变PC的值,则PC的值为程序顺序执行的下一地址;否则PC值为OP_IMPL语句中所赋的值。模拟执行结束后,即返回到取指过程。 应用程序结束时使用软件中断指令调用exit系统调用。sim-safe模拟执行到exit系统调用,就结束当前应用程序的模拟,返回sim-safe的主流程。这时sim-safe输出应用程序动态执行的指令数、内存访问次数和模拟器执行时间等数据,并结束运行。 下面我们针对32位定长指令系统在SimpleScalar代码中的主要修改进行一些基本的说明。其它方面大家请根据自己的具体情况修改相关代码(例如sim-safe.c源代码)。 1.在simple-arm目录下建立新的文件夹:例如,myisa。 2.将target-arm目录下的文件copy到myisa目录下,并修改文件名。 例如:arm.[h,c,def] 修改为 myisa.[h,c,def]。 3.修改或重新编写相应的文件,主要是指令模板myisa.def、系统调用syscall.c和装载模块loader.c。 3.1关于指令模板 指令模板文件machine.def由一系列下述三种形式的宏组成: DEFINST(OP,MSK,NAME,OPFORM,RES,FLAGS,O1,O2,O3,I1,I2,I3,I4) DEFLINK(OP,MSK,NAME, SHIFT,MASK) CONNECT(OP) 具体含义可以参阅代码或给出的SimpleScalar相关文档。 下面的图示以一条指令的译码过程为例,说明SimpleScalar利用指令模板进行译码的机制。 3.2关于系统调用的说明 系统调用是操作系统提供给用户程序的接口,用户程序通过系统调用来使用操作系统提供的多种服务,如读、写文件等。对于应用级模拟器,由于并不支持操作系统的运行,故在模拟执行软件中断指令时不能直接模拟该指令本身的语意,而是需要采取特殊的方式模拟,以保证完成所需的操作(如屏幕输出、读写文件等),并保证在返回到软件中断下一条指令时程序运行的状态(各寄存器及内存中存储的数据)与应有状态一致。 SimpleScalar中,对指令译码后,如果判断为软件中断指令,则调用

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档