为什么有些软件不能用Rosetta2转义运行?
很多软件比如 virtualbox
和 vmawre
都没有办法通过苹果的 Rosetta2 跑在 M1
的 mac 上面,这是为什么呢?
因为商业上的指令集版权问题呢?比如有些指令集是 intel
或者 amd
私有的,不让转义吗?
还是技术问题?有些指令是技术上没有办法完成转义?还有苹果还没有时间翻译这些指令?
还是其他什么原因?
还有一个问题:为什么微软那套就只能在 ARM 下跑 32 bit 的 x86 软件。而苹果这个却可以 32 和 64 通吃呢!
参考文章:
无法在M1芯片版MacBook上使用的应用程序清单
回答:
指令集确实有版权,但根本原因不在这上面。
你提那俩 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.
以上是 为什么有些软件不能用Rosetta2转义运行? 的全部内容, 来源链接: utcz.com/p/938257.html