- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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中,对指令译码后,如果判断为软件中断指令,则调用
您可能关注的文档
最近下载
- 基于同步相量测量技术的广域测量系统应用现状及发展前景.docx VIP
- 公司安全生产治本攻坚三年行动方案(20242026).pdf VIP
- 苏科版九年级初三数学上册全册课件.pptx
- 2022勘察设计服务成本核算指南.docx
- 中小学人工智能教育方案的实施方法与策略.pptx
- 2024年秋新商务星球版地理七年级上册教学课件 第四章 地球表层的基础自然要素 第1节 陆地与海洋.pptx
- 2023春国开电大《水利工程设计导论》形考作业(1-4)答案.doc
- 走进舞蹈艺术(首都师范)中国大学MOOC慕课 客观题答案.docx
- 燃气锅炉房安全管理制度(四篇).doc VIP
- 申报高级研究员个人工作总结.pptx
文档评论(0)