免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: mik
打印 上一主题 下一主题

cpu 模拟器 [复制链接]

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
11 [报告]
发表于 2007-05-09 09:06 |只看该作者
如果在x86上模拟x86,那么可能不会有太大的性能损失。模拟指令可以直接在芯片上执行而不需要被转换。
性能的损失大多发生在特权指令(如果要运行特权软件如OS的话)和相关的存储管理上。

论坛徽章:
0
12 [报告]
发表于 2007-05-09 21:43 |只看该作者
原帖由 beepbug 于 2007-5-9 06:56 发表于 11楼  

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


譬如做一个硬件定时器,本来根据CPU的时钟速率,内置定时/计数器的结构,最短可以做到1μs。现在做成模拟CPU,内置定时/计数器当然也是用另一种CPU指令模拟出 ...


这样做就真正想做一个CPU模拟器了。这就复杂了,倒不如真正设计一个CPU出来!

人家的需求可不需要这么复杂,确实不能称做为“CPU模拟器”称做“解释器”比较合适

论坛徽章:
0
13 [报告]
发表于 2007-05-10 06:25 |只看该作者
CPU的模拟,是非常有用的。
交叉开发就需要这个(可能不叫这个名字)。
像低档单片机,由于本身资源极其有限,直接在上面做开发,会有很大的限制。
在各种单片机开发装置上做开发,有一个限制,你不能完全使用这种单片机的所有资源。因为开发装置本身一定要占用一些资源。
如果在X86或PowerPC等机器上做交叉开发,就没有这种限制。
但是,交叉开发也有不足。最大的问题就是上面说的与时间有关的。
做交叉开发,大致有两种。一是只在宿主机上编程、编译(或汇编)、链接,然后把目的程序传到目的机上调试。这只需要做个交叉编译器。二是连调试也在宿主机上做,这就需要模拟CPU了。
13楼说的,可能就是个交叉汇编器吧?

论坛徽章:
0
14 [报告]
发表于 2007-05-14 21:47 |只看该作者
这个比较简单,我做过相对简单的模拟,其实最主要的是识别指令,因为x86是cisc的架构,所以是不定长的,要通过指令码识别,另外注意分配x86架构的通用寄存器,以及他们的用途,还有要晓得寻址方式,以及虚拟内存映射方式,简单的基本方式就是这样,扩展模式就复杂了,寄存器也会多出很多,包括寄存器重写等技术
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP