为什么有些软件不能用Rosetta2转义运行?

很多软件比如 virtualboxvmawre 都没有办法通过苹果的 Rosetta2 跑在 M1 的 mac 上面,这是为什么呢?

因为商业上的指令集版权问题呢?比如有些指令集是 intel 或者 amd 私有的,不让转义吗?

还是技术问题?有些指令是技术上没有办法完成转义?还有苹果还没有时间翻译这些指令?

还是其他什么原因?

图片.png

还有一个问题:为什么微软那套就只能在 ARM 下跑 32 bit 的 x86 软件。而苹果这个却可以 32 和 64 通吃呢!

参考文章:
无法在M1芯片版MacBook上使用的应用程序清单

阅读 3.7k
1 个回答

指令集确实有版权,但根本原因不在这上面。

你提那俩 VM 不是不能用 Rosetta2 跑,而是 Rosetta2 不支持平台虚拟化 ———— 即便你用 Rosetta2 强行跑起来 VirtualBox/VMWare,可又没法运行虚拟机,这又有啥用呢?就为了看那个管理器的 GUI 吗?

下面列表里那些具体的就不太清楚了,鬼知道原本的程序是不是用了啥不能翻译的特权指令。


REF: https://developer.apple.com/d...

What Can’t Be Translated?

Rosetta can translate most Intel-based apps, including apps that contain just-in-time (JIT) compilers. However, Rosetta doesn’t translate the following executables:

  • Kernel extensions
  • Virtual Machine apps that virtualize x86_64 computer platforms

Rosetta translates all x86_64 instructions, but it doesn’t support the execution of some newer instruction sets and processor features, such as AVX, AVX2, and AVX512 vector instructions. If you include these newer instructions in your code, execute them only after verifying that they are available. For example, to determine if AVX512 vector instructions are available, use the sysctlbyname function to check the hw.optional.avx512f attribute.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏