免费注册 查看新帖 |

Chinaunix

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

能不能以x86指令为源码,“编译”成mips指令 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-08-20 15:03 |只看该作者
原帖由 Cyberman.Wu 于 2009-8-20 13:03 发表
不知道你说的是指什么,例如在x86上通过QEMU再跑一个x86版本的Linux,和跑一个PowerPC的Linux效率上不同吧?对于同构的情况虚拟机能做许多优化,但对于跨体系结构,则多数会慢许多。


呵呵,我所说的是回应7楼的问题。

不错,如果Host和Target同构,是会快些,例如,可直接映射Target寄存器到Host机上。

论坛徽章:
0
12 [报告]
发表于 2009-08-20 15:05 |只看该作者
原帖由 ninesunqian 于 2009-8-20 13:17 发表
qemu确实很强,用了动态二进制翻译。tager支持的架构很多, host就不支持mips, 不过相信不久就可以了。
http://www.qemu.org/status.html

kvm 是不是只能仿真x86指令?
有空研究一下,有点意思。


KVM是基于VT/SVM技术的,貌似目前只有Intel和AMD的CPU。

论坛徽章:
0
13 [报告]
发表于 2009-08-20 22:26 |只看该作者
这不就是虚拟机吗

论坛徽章:
0
14 [报告]
发表于 2009-08-21 08:57 |只看该作者
好像有点扯远了。我想问的仅仅是把x86的指令动态翻译成mips指令。
逐条翻译肯定效率低,两者架构不同,寄存器不同,不能充分发挥mips多寄存器的优点。
而把x86指令分解成平台无关的中间指令 (类似与瓦片覆盖的反向过程),然后再拼成mips指令(瓦片覆盖)。
如果是动态翻译,可能涉及到估计指令的执行频率来判断是逐条解释执行,还是先把整个指令块(指令跳转之间的部分)翻译再执行。

至于操作系统不一样,例如,target是linux,  host是windows. 就涉及到各位所说的虚拟化技术了吧?

论坛徽章:
0
15 [报告]
发表于 2009-08-21 10:36 |只看该作者
原帖由 ninesunqian 于 2009-8-21 08:57 发表
好像有点扯远了。我想问的仅仅是把x86的指令动态翻译成mips指令。
逐条翻译肯定效率低,两者架构不同,寄存器不同,不能充分发挥mips多寄存器的优点。
而把x86指令分解成平台无关的中间指令 (类似与瓦片覆盖 ...


明白你的意思了。

这不正是QEMU正在做的事吗?Host是Mips平台,Target是X86平台,通过TCG动态转换Target指令为Host指令。遗憾的是,目前Qemu还不支持Host是Mips平台。不过,应该不会等很久了。

论坛徽章:
0
16 [报告]
发表于 2009-08-30 17:46 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
17 [报告]
发表于 2009-09-03 01:50 |只看该作者
翻译成中间代码当然可以了,不用中间代码都可以,复杂指令变换成精简指令,还记得克鲁索的代码变形吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP