在 ARM 中,运行 x86 程序
知乎 / M1 是怎么兼容 x86 的?MacBook 是否会有软件兼容性问题
M1 不能识别 x86 的指令,那是不是可以把 x86 的复杂指令,先翻译成 ARM 的精简指令呢?
于是乎,苹果就开发了一个叫做 Rosetta 2 的转译机制,对于针对 x86 指令集编译的代码,在映像执行路径中就会被内核识别,内核则会把控制权交给 Rosetta 转译存根。此后转译存根会在映像执行期间转译,这个模式下转译和执行可以理解为是同时执行的。这种也被称作即时转译,Just In Time(JIT);
苹果系统之家 / 在 Apple Silicon M1/M2 Mac 电脑上安装 Rosetta 2 运行 intel 应用