Почему приложения x86 не могут работать на процессорах ARM?

Почему приложения x86 не могут работать на процессорах ARM?

В компьютерах ядро ​​находится между приложением и оборудованием (ЦП) и позволяет программному обеспечению взаимодействовать с оборудованием.

Итак, почему разработчики не могут перенести свои приложения из x86 Windows на Microsoft Surface X (процессоры SQ1 и SQ2)? Например, Chrome, Firefox, некоторые инструменты тестирования и игры... Я думал, что Microsoft нужно просто заменить ядро ​​x86-64 на версию ARM, и большинство приложений будут работать нормально.

То же самое касается и Linux.

решение1

В этом случае ядро ​​делает меньше, чем вы ожидаете. В частности, ядро ​​не транслирует/не разбирает/не интерпретирует/не искажает машинный код, из которого сделан скомпилированный двоичный файл.

когда кто-токомпилируетисходный код в двоичный файл, то, что они делают, на самом деле переводят этот исходный код винструкции машинного кодачто понимает ЦП.

Одна из вещей, которая делаетx86платформа, является общейНабор инструкцийна всем совместимом оборудовании. Таким образом, компилятор может ожидать, что любой процессор x86 поймет PUSHинструкцию и сделает ожидаемое, когда вы выполните ее через поток.

РУКАиспользует другой набор инструкций. В этом случае исходный код необходимо скомпилировать (перевести) в инструкции, которые может понять процессор ARM (инструкции, определенные в его наборе инструкций).

Не все программы используют «родные» двоичные файлы (двоичные файлы, которые состоят исключительно из правильно сформированных инструкций, которые реализуются набором инструкций ЦП). Такие языки, как Java и C#, компилируются в виртуальный язык ассемблера и JIT-компилируются в родные инструкции во время выполнения. Другие используют интерпретаторы, которые были настроены для данной платформы.

Итак, в целом, процессоры ARM не распознают язык, который используют скомпилированные программы x86, и наоборот. Хотя ядро ​​будет контролировать такие вещи, как доступ к оборудованию и планирование ЦП, оно не меняет инструкции программ, выполняемых в системе. Оно просто создает процесс, запускает выполнение и предоставляет время выполнения на ЦП, так что многие процессы могут делить его полуодновременно.

Связанный контент