-7

Предположим, у вас есть встроенное устройство ARM и ноутбук на базе x64. Обе системы работают под управлением GNU/Linux. Если вы решите скопировать двоичный файл "ls" с ноутбука на встроенное устройство и запустить его на встроенном устройстве, будет ли он работать? Объясните свои рассуждения.

2 ответа2

4

Предположим, у вас есть встроенное устройство ARM и ноутбук на базе x64. Обе системы работают под управлением GNU/Linux.

ХОРОШО.

Если вы решите скопировать двоичный файл "ls" с ноутбука на встроенное устройство и запустить его на встроенном устройстве, будет ли он работать?

Вот где это становится сложно. Это, очевидно, не будет работать как есть; наборы инструкций совершенно разные.

Тем не менее, это может быть сделано для запуска.

Очевидный выбор - это некая форма виртуализации или эмуляции. Эмулируя процессор и окружающие схемы поддержки, вы можете запускать любой исполняемый двоичный файл, при условии, что вы можете написать эмулятор, который достаточно близок к исходному аппаратному и программному обеспечению для получения желаемого результата.

Это делается все время; это сколько лет играм Sega или Nintendo, Apple] [программное обеспечение, и тому подобное, для работы на современных ПК. Когда целевая платформа имеет значительно большую вычислительную мощность, чем исходная платформа, и при наличии достаточно подробной документации аппаратного и микропрограммного обеспечения эмуляция часто является относительно простой. Рассмотрим для примера этот эмулятор IBM 5150, написанный на Javascript, который работает внутри вашего веб-браузера. Кросс-компиляция и эмуляция - относительно распространенный подход при разработке программного обеспечения для встраиваемых платформ.

Другой альтернативой было бы преобразование машинного кода в целевую архитектуру (в данном случае, на базе устройства ARM) с использованием компилятора. В зависимости от степени различия между архитектурами, это может быть тривиальным или очень сложным. Это было бы особенно проблематично, если окружающая схема в значительной степени отличается; например, видеоигра, которая использует специализированное аппаратное оборудование для обработки спрайтов и звука игровой консоли, вероятно, не сможет легко перейти на платформу, которая не имеет этих функций.

Реальный вопрос заключается в следующем: почему вы хотите сделать что-то подобное в первую очередь?

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

0

Нет. Потому что двоичный файл был скомпилирован для другого процессора. Он основан на наборе команд Intel x86 и не имеет смысла для ARM или любого другого процессора в этом отношении.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .