百科问答小站 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转译的如此高效确实让人惊讶。




  

相关话题

  在 PC 领域,Windows 能战胜 macOS 的最大原因是否在于游戏领域的优势? 
  强大的究竟是苹果的M1还是台积电的5nm? 
  surface book2 和 雷蛇灵刃 和 macbook pro哪一个更好一点? 
  mac book2013现在可以用来做什么? 
  现阶段最便宜的完美黑苹果配置是什么? 
  M1芯片发布后,intel和amd的芯片只能好自为之,还是会降价?或是迎来性能突变? 
  怎样用 Mac 和 iPhone 高效学习? 
  如何评价苹果在 2016 年 10 月 27 日发布的 MacBook Pro? 
  Mac 为什么不用 AMD 的 CPU? 
  MacBook Pro m1用户有必要换最新的MacBook Pro m1 pro/max吗? 

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





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利