[发明专利]一种从总线指令流中提取实际执行指令和预取指令的方法有效
申请号: | 201010611254.9 | 申请日: | 2010-12-17 |
公开(公告)号: | CN102063370A | 公开(公告)日: | 2011-05-18 |
发明(设计)人: | 吴瑾;段永顥;于志杰;郭向英;董燕;武占峰;张西超;张金巍;魏鹏;曾霞;左万娟;尚智 | 申请(专利权)人: | 北京控制工程研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 臧春喜 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种从总线指令流中提取实际执行指令和预取指令的方法,本发明根据8086/186/386处理器的片上缓存行为,仅在8086/186/386处理器总线指令流断裂时进行预取指令分析,且仅对当前缓存内指令流遍历一遍,能够准确而有效地过滤总线上出现的预取指令,分析得到处理器实际执行指令,从而提高了测试效率。由于8086、80186、80386处理器指令集的一致性、处理器缓存操作的相似性(仅缓存大小略有不同),本发明完全可以通用于这3款处理器的目标码覆盖率测试。 | ||
搜索关键词: | 一种 总线 指令 提取 实际 执行 方法 | ||
【主权项】:
一种从总线指令流中提取实际执行指令和预取指令的方法,其特征在于步骤如下:(1)根据目标代码建立跳转地址表,跳转地址表包括指令地址、指令类型、指令长度和跳转目标地址;(2)建立一个空的仿真处理器缓存区用于记录总线指令采集地址,该仿真处理器缓存为一个先入先出缓存区;(3)采集总线指令地址,将首次采集的总线指令地址放入仿真处理器缓存区中,将下次采集的总线指令地址与仿真处理器缓存区中最后一条指令的地址进行连续性判断,如果地址连续则执行步骤(4),否则执行步骤(5);(4)将本次采集的总线指令地址放入仿真处理器缓存区中,判断仿真处理器缓存区的数据是否溢出,如果仿真处理器缓存区有溢出则将仿真处理器缓存区中的首条指令移出,将移出的指令设置为实际执行指令,如果仿真处理器缓存区的数据没有溢出,则继续采集总线指令地址并放入仿真处理器缓存区中,直至总线指令地址采集结束;(5)将仿真处理器缓存区中的总线指令地址对应的指令设置为预取指令,并将不连续的总线指令地址作为目的地址,将仿真处理器缓存区中首个总线指令地址对应的指令进行LPAS处理,如果LPAS处理的结果为“非法路径”,则清空仿真处理器缓存区;如果LPAS处理的结果为“找到合法路径”,则首条指令为实际执行指令,其余指令为预取指令;如果LPAS处理的结果为“未找到合法路径”,则执行步骤(6);(6)将仿真处理器缓存区中下一条总线指令地址对应的指令进行LPAS处理,如果LPAS处理的结果为“非法路径”,则仿真处理器缓存区中所有总线指令地址对应的指令均为预取指令,清空仿真处理器缓存区;如果LPAS处理的结果为“找到合法路径”,则该条指令为实际执行指令,其余指令为预取指令;如果LPAS处理的结果为“未找到合法路径”,则该条指令为实际执行指令,继续执行步骤(6)直至总线指令地址对应的所有指令处理完毕,则仿真处理器缓存区中所有总线指令地址对应的指令均为预取指令,清空仿真处理器缓存区;所述LPAS处理的方法为:(a)根据跳转地址表中的指令类型对当前指令的指令类型进行判断,如果指令类型为分支指令,执行步骤(b),如果指令类型为跳转指令则执行步骤(c),如果指令类型为返回指令则返回“找到合法路径”,否则返回“未找到合法路径”;(b)将目的地址与跳转地址表中的跳转目标地址进行比较,如果两个地址一致则返回“找到合法路径”,如果两个地址不一致则返回“未找到合法路径”;(c)将目的地址与跳转地址表中的跳转目标地址进行比较,如果两个地址一致则返回“找到合法路径”,如果两个地址不一致则返回“非法路径”。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京控制工程研究所,未经北京控制工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010611254.9/,转载请声明来源钻瓜专利网。