Можно ли запустить двоичный файл x86 на процессоре ARM?

13563
Ryall

Можно ли преобразовать / перекомпилировать уже скомпилированный двоичный файл x86 в двоичный файл ARM?

Я использую BeagleBoard с командной строкой Ubuntu (Maverick) и хочу запустить сервер Ventrilo, но предоставляемый ими исполняемый файл x86 не может быть запущен на аппаратном уровне, насколько я могу судить (скорее всего, из-за отличающейся архитектуры).

К сожалению, у меня нет доступа к исходному коду, чтобы позволить мне перекомпилировать его изначально.

Если нет, есть ли другой способ заставить бинарный файл работать (например, эмуляцию)?

6
Много лет назад для компьютеров с ОС Acorn Risc существовали эмуляторы более старых систем x86, таких как DOS-машины 80286. Это может быть отправной точкой, чтобы увидеть, продвинулись ли вовлеченные люди в идею жить сегодня. Кроме того, это интересный вопрос, учитывая очевидное движение ARM в серверное пространство, вытеснение бинарных приложений x86, такой эмулятор может облегчить смещение x86 в этой области. therobyouknow 13 лет назад 1

3 ответа на вопрос

6
anddam

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

домашняя страница бормотания и бормотания

Отлично, спасибо, я не знал, что это существовало. Могло бы потребоваться некоторое убеждение, чтобы другие использовали его, но я думаю, что тот факт, что это самое высокое качество в сочетании с самой низкой задержкой, очень помогает. Ryall 13 лет назад 0
4
OneOfOne

Короткая версия: если у вас нет исходного кода, то нет.

Длинная версия: вы можете использовать qemu (или kvm или virtualbox и т. Д.) И использовать минимальную эмулированную систему x86 для запуска сервера.

1
Machado

Я думаю, что ответ «возможно». Обычно вы можете декомпилировать исполняемый файл, если вы знаете об этом достаточно. Если вы декомпилируете код на язык с компилятором ARM и библиотеками, необходимыми для компиляции этого двоичного файла на вашу платформу ARM, то это должно быть возможно.

Например: если ваш сервер Ventrilo может быть декомпилирован в исходный код C, а этот исходный код соответствует стандарту ANSI, возможно, у вас будет достаточная поддержка с вашим компилятором ARM для перекомпиляции кода.

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

Просто небольшая проблема: большинство декомпилированных программ не компилируются без модификации - декомпиляторы не так хороши :( Filip Haglund 11 лет назад 0
«если вы знаете об этом достаточно» охватывает несколько лет проектирования микропроцессоров, сборки, наборов команд, шестнадцатеричных редакторов и т. д. Basic 8 лет назад 0
Что ж, в конкретном случае, заявленном OP, у него есть скомпилированная программа X86. Я предполагаю, что количество доступных декомпиляторов X86 хорошее. Я также предполагаю, что, поскольку Ventrilo используется для связи, он может не использовать какой-либо высокоуровневый язык байт-кода, такой как Java или C #. Так что он может достаточно хорошо декомпилироваться в C ++ / C. И сборка X86 хорошо понятна, и инструкции могут быть перенесены / смоделированы на других архитектурах. Это может быть нелегко, но это определенно выполнимо. Machado 8 лет назад 0
Еще 2 цента: ответ основан на моем личном опыте переноса Lua на PalmOS несколько лет назад. Lua была (есть) на 100% в ANSI-C, но у PalmOS не было ANSI-C-совместимого компилятора. Мне пришлось написать небольшой слой перевода без знания архитектуры Motorola 68k и / или отличного знания языка C. К счастью, «вещь» сработала, и я полагаю, что это больше вина Луа, чем заслуга моего кода. :) Machado 8 лет назад 0

Похожие вопросы