百科问答小站 logo
百科问答小站 font logo



理论上来讲,macOS的rosetta转译未来能不能直接转译Windows应用? 第1页

  

user avatar   MebiuW 网友的相关建议: 
      

首先明确一下:Rosetta/Rosetta2是指令集转译(X86-to-ARM), Crossover算是软件兼容层(Windows-to-macOS,并且也不算是转译),它们并不工作在一个层级,“Crossover利用Rosetta来转译Windows应用”或者“Rosetta转译Windows应用”都是不对的。Rosetta的出现与否,都不会影响苹果想不想做Windows软件兼容。

苹果官方是肯定不会这么搞的,又不是某个吊打安卓的系统。 一方面,苹果有自己的独立且还算可用的生态,没必要蹭别家的生态,也不能把肥水流到外人田。另一方面,这么做有法律风险,Windows并不开源,可能存在侵权的问题。苹果在用Intel芯片的时期都没提供支持,还指望换到ARM后提供么。

所以说,从Rosetta的定位上(指令集转译)来说,就不会去兼容Windows应用,而且苹果也不会以任何形式提供官方支持。


user avatar   saturnman-58 网友的相关建议: 
      

一个应用程序能运行,除了自己的代码之外还需要调用平台的api,除非苹果能实现全套的微软平台api,否则不可能直接转译运行windows的程序。

rosetta2 的工作方式其实经常让人误解,因为“转译”这个词的意思太模糊了,很多人会误以为rosetta2是把所有x86指令逐条转换成等效的arm指令,如果这样做肯定性能会非常差估计会不足原生的1/10。

rosetta2的工作原理基本如下:

  1. 设计一个逻辑上的虚拟机指令架构,这个虚拟机指令架构有自己的寄存器和寻址规范调用规范之类的,基本上就是设计一个虚拟的cpu了。
  2. 把app中x86的指令转换为在这个虚拟机指令架构上的指令,把api调用转换为对这个虚拟机指令架构的规范调用,规范和转换好所有的内存对齐之类的要求。
  3. 设计一个编译器,把这个虚拟机指令架构的所有汇编指令静态编译到arm指令上形成与x86对应的镜像模块。
  4. 设计一个动态精确模拟所有x86指令的可执行虚拟机来应付原来x86中动态生成x86汇编的代码,并能对动态x86指令操作结果进行变换,这部分是性能瓶颈并且很多程序崩溃由此导致,不过一般占比不高。
  5. 重新设计操作系统的程序loader,在应用启动时启动rosetta2进行翻译和符号映射,装载翻译好的模块替代原模块进行运行,运行到动态指令生成的时候就调用精确模拟的虚拟机进行执行动态指令并获取结果回填。

以上原理说起来简单,但是没有深厚的系统软件积累是做不到的,尤其是rosetta2转译的如此高效确实让人惊讶。




  

相关话题

  surface pro6 和MacBook Pro18款怎么选,出去读研究生管理专业。基本不做设计? 
  苹果公司为什么要推出 Mac 可安装 Windows 的 Boot Camp 功能? 
  英特尔是否隐瞒实力,为了保留竞争对手? 
  MacBook Pro两个充电器同时充电会发生什么? 
  mbp的touch bar这么好用为什么还有人讨厌? 
  Mac是如何做到快速待机快速唤醒的? 
  英特尔路线图泄漏,正在研发新的 CPU 产品线,目标是研发出超过苹果芯片的产品,你看好英特尔吗? 
  除 LG UltraFine 系列外,还有哪些适合搭配 M1 Mac mini 的 4K 显示器推荐? 
  在拖拽交互上,macOS 是否比 Windows 更好? 
  OS X Mavericks 和 Yosemite 中 Photo Booth 应用图标中的美女是谁? 

前一个讨论
古代男人可以通过毁掉贵族女子名声的方式高攀千金小姐吗?
下一个讨论
为什么KOL们清一色拿视频处理来证明苹果M1性能强大?





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利