2014-01-13 1 views
4

Я искал, чтобы получить ответы на эти вопросы. но не много удачи.Можно ли запустить 64-битный код в машине с 32-битным процессором?

  1. Можно ли запустить 32-bit код в машине с 64-bit processor?

    Ответ кажется да. но есть дискуссия по проблемам производительности, поскольку 32-bits остаются неиспользованными на процессоре.

  2. Теперь мой вопрос в обратном порядке: возможно ли запустить код 64-bit в машине с процессором 32-bit?

    из маленького понимания, ответ НЕТ, потому что код, предназначенный для работы на 64-bit будет использовать 64-process registars но 32-bit машина предлагает только 32.

На otherhand, я нашел this link. Согласно этому, можно скомпилировать 64-битный код на 32-битной машине. Но я не понимаю, как это делается, плюс, если компиляция на машине 32-bit также будет гарантировать, что execution на том же самом.

Спасибо за помощь

+4

«В соответствии с этим возможно скомпилировать 64-разрядный код на 32-разрядной машине». - Да, это вполне возможно. Это называется кросс-компиляцией. Но это не имеет никакого отношения к тому, какой код/​​исполняемые файлы может запускаться 32-разрядной машиной. –

+5

Педантично: обе 32-битные и 64-битные машины - это машины для обучения. Таким образом, они могут запускать эмуляцию друг друга ... – Mysticial

+0

@Mysticial: что это значит? неясно, что вы имеете в виду здесь. –

ответ

11

Можно ли запускать 32-битный код в машине с 64-разрядным процессором?

Да. Например, это обрабатывается в Windows через WOW64.

Теперь мой вопрос обратный, возможно ли запустить 64-разрядный код на машине с 32-разрядным процессором?

№ 64-битного кода потребуется 64-разрядный набор команд, который не будет доступен для 32-разрядного процессора.

В соответствии с этим, можно скомпилировать 64-разрядный код на 32-разрядной машине.

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

+0

awesome! но тогда последняя часть гарантировала бы «писать один раз, работать где угодно», а не «писать один раз, компилировать в любом месте». –

+1

@ user1988876 Если вы думаете в терминах Java (или других «управляемых» языков стиля), вы компилируете промежуточный набор инструментов, который затем может выполнять «в любом месте» (с соответствующей платформой выполнения) - в случае Java вы компилируете к java-байтовому коду, который может быть запущен на любой JVM (теоретически). –

+0

@ user1988876 Я также не попал в возможное исполнение через эмуляторы: http://en.wikipedia.org/wiki/Emulator Я подозреваю, что это не то, что вы были после этого. –

 Смежные вопросы

  • Нет связанных вопросов^_^