免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7283 | 回复: 13
打印 上一主题 下一主题

cpu 模拟器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-28 20:39 |只看该作者 |倒序浏览
网友 story_tree 在偶的 blog 里询问 cpu 摸拟器实现的建议。

  1. 斑竹你好,我来你这里讨教了,我现在在写一个cpu的模拟器,就是为了能够识别和模拟执行ia-32的指令,给点建议吧
复制代码


呵呵,讨教就不敢当。偶觉得这是个很好的练手项目,有意思,所以在论坛里大家讨论讨论。


其目的是:建立一个 CPU 的模拟执行环境,主要是 x86 架构方面的。

如果是输入指令流,然后执行的,有点像 debug 这种模式,这种需求并不难。
将输入的指令进行合法检查后,host 机也是 x86 的话,就直接送CPU执行。host 机不是 x86 的话,对指令做相应的转换后执行

论坛徽章:
0
2 [报告]
发表于 2007-04-29 10:20 |只看该作者
将输入的指令进行合法检查后,host 机也是 x86 的话,就直接送CPU执行。host 机不是 x86 的话,对指令做相应的转换后执行

怎么判断某一个或几个字节是X86指令,还是PowerPC指令,还是ARM指令,还是MCS-51的指令?
没办法判别的。

论坛徽章:
0
3 [报告]
发表于 2007-04-29 12:29 |只看该作者
原帖由 beepbug 于 2007-4-29 10:20 发表于 2楼  

怎么判断某一个或几个字节是X86指令,还是PowerPC指令,还是ARM指令,还是MCS-51的指令?
没办法判别的。



1、他的需求是输入汇编码而不是机器指令
2、他的需求已经讲得很明白了,就是:摸拟 X86 CPU,何需判断输入的是 x86、还是 PowerPC 指令

论坛徽章:
0
4 [报告]
发表于 2007-04-30 15:02 |只看该作者
哦。那不该叫CPU模拟器了。我上当了。

不过,还是有问题。不同汇编语言并非所有指令都不同,有些正好定义成一模一样,怎么办?

[ 本帖最后由 beepbug 于 2007-4-30 15:04 编辑 ]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2007-04-30 21:46 |只看该作者
原帖由 beepbug 于 2007-4-30 15:02 发表于 4楼  
哦。那不该叫CPU模拟器了。我上当了。

不过,还是有问题。不同汇编语言并非所有指令都不同,有些正好定义成一模一样,怎么办?

定义成一模一样又有啥矛盾呢?

论坛徽章:
0
6 [报告]
发表于 2007-04-30 22:08 |只看该作者
原帖由 beepbug 于 2007-4-30 15:02 发表于 4楼  
哦。那不该叫CPU模拟器了。我上当了。

不过,还是有问题。不同汇编语言并非所有指令都不同,有些正好定义成一模一样,怎么办?


2、他的需求已经讲得很明白了,就是:摸拟 X86 CPU,何需判断输入的是 x86、还是 PowerPC 指令

论坛徽章:
0
7 [报告]
发表于 2007-05-07 19:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2007-05-08 11:25 |只看该作者
“将输入的指令进行合法检查后,host 机也是 x86 的话,就直接送CPU执行。host 机不是 x86 的话,对指令做相应的转换后执行”。楼主自己说的话,我们只能这样理解。

所谓CPU模拟器。我理解,是在一种CPU平台上,用软件做一个VM,在这个VM上能“运行”另外一种完全不同的CPU指令。
在绝大多数CPU中,总有某些指令同时间密切相关。因此,要完全模拟,寄生CPU的速率至少要比被模拟CPU高一个数量级。

论坛徽章:
0
9 [报告]
发表于 2007-05-08 21:44 |只看该作者
原帖由 beepbug 于 2007-5-8 11:25 发表于 9楼  
“将输入的指令进行合法检查后,host 机也是 x86 的话,就直接送CPU执行。host 机不是 x86 的话,对指令做相应的转换后执行”。楼主自己说的话,我们只能这样理解。

所谓CPU模拟器。我理解,是在一种CPU平台 ...


偶所说的:“将输入的指令进行合法检查后”是指语法上的检查。例如: "add [ebp],[eax]" .....


绝大多数CPU中,总有某些指令同时间密切相关。因此,要完全模拟,寄生CPU的速率至少要比被模拟CPU高一个数量级


偶不明白啥意思,望指教

论坛徽章:
0
10 [报告]
发表于 2007-05-09 06:56 |只看该作者
原帖由 mik 于 2007-5-8 21:44 发表于 10楼  
偶所说的:“将输入的指令进行合法检查后”是指语法上的检查。例如: "add ," .....

这个就不是CPU模拟器,而是汇编器模拟器了。

原帖由 mik 于 2007-5-8 21:44 发表于 10楼
偶不明白啥意思,望指教

譬如做一个硬件定时器,本来根据CPU的时钟速率,内置定时/计数器的结构,最短可以做到1μs。现在做成模拟CPU,内置定时/计数器当然也是用另一种CPU指令模拟出来的,除非后者比前者快很多,否则决计做不出1μs。如果做的是软件定时,那更明白。譬如,需要1ms,原来在实际CPU上做,重复做两条指令1000次。这两条指令做一次就是1μs。现在在模拟CPU上做,是用另一种CPU指令来模拟它,一般需用就多的指令来完成。如果两者的速率是同一数量级,就没法做出来。
据我经验,做模拟CPU的CPU的速率,比被模拟的CPU的速率,至少要高一个数量级。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP