"developers must optimise their apps to run on ARM-based processors"是什么意思?
What is it meant by "developers must optimise their apps to run on ARM-based processors"?
这是一个我不太了解的主题,我希望能更好地理解这个主题。
我正在阅读有关 Apple 向 Apple Silicon 过渡的文章,在某个时候我读到“Apple 将发布 Rosetta 2,这是一个仿真层,可让您 运行 在新 Mac 上使用旧应用程序。”。 =11=]
据我所知,应用程序是用高级语言编写的(例如 C/C++、Java 等)。然后编译器(假设解释器暂时不存在)读取该代码并将其翻译成汇编代码。然后汇编程序将汇编代码转换为处理器可读的机器代码。
我的问题是,假设以上是正确的,为什么需要 Rosetta 2,因为 CPU 无论如何都应该将高级代码转换为可读的机器代码?为什么开发人员需要“优化”(或关心他们的应用程序 运行 在什么处理器上)他们的应用程序,因为它们(大部分)是用高级语言(处理器可以编译)编写的?我不明白为什么程序员会关心 CPU 是否应该处理编译和汇编。
这个问题可能相当微不足道,但我无法通过阅读编译器或 CPU 体系结构来找到我要找的东西。
a CPU is supposed to translate high level code into readable machine code anyway?
不,CPU 本身不会这样做,它是通过 CPU(JIT 或提前编译器)上的软件 运行 发生的。
对于提前编译器(例如普通的 C++ 实现),闭源软件仅提供 x86 机器代码,不提供源代码。所以你不能自己重新编译它。开源软件通常可以通过重新编译轻松移植。
重写对于大多数应用来说是一种夸大其词,大多数只能重新编译。
但如果您有自定义的 x86 特定代码,例如使用 SSE/AVX 内在函数或手写 asm 的手动矢量化 SIMD 循环,则必须将它们移植到 NEON/AArch64 SIMD。
这是一个我不太了解的主题,我希望能更好地理解这个主题。
我正在阅读有关 Apple 向 Apple Silicon 过渡的文章,在某个时候我读到“Apple 将发布 Rosetta 2,这是一个仿真层,可让您 运行 在新 Mac 上使用旧应用程序。”。 =11=]
据我所知,应用程序是用高级语言编写的(例如 C/C++、Java 等)。然后编译器(假设解释器暂时不存在)读取该代码并将其翻译成汇编代码。然后汇编程序将汇编代码转换为处理器可读的机器代码。
我的问题是,假设以上是正确的,为什么需要 Rosetta 2,因为 CPU 无论如何都应该将高级代码转换为可读的机器代码?为什么开发人员需要“优化”(或关心他们的应用程序 运行 在什么处理器上)他们的应用程序,因为它们(大部分)是用高级语言(处理器可以编译)编写的?我不明白为什么程序员会关心 CPU 是否应该处理编译和汇编。
这个问题可能相当微不足道,但我无法通过阅读编译器或 CPU 体系结构来找到我要找的东西。
a CPU is supposed to translate high level code into readable machine code anyway?
不,CPU 本身不会这样做,它是通过 CPU(JIT 或提前编译器)上的软件 运行 发生的。
对于提前编译器(例如普通的 C++ 实现),闭源软件仅提供 x86 机器代码,不提供源代码。所以你不能自己重新编译它。开源软件通常可以通过重新编译轻松移植。
重写对于大多数应用来说是一种夸大其词,大多数只能重新编译。
但如果您有自定义的 x86 特定代码,例如使用 SSE/AVX 内在函数或手写 asm 的手动矢量化 SIMD 循环,则必须将它们移植到 NEON/AArch64 SIMD。