2014-09-10 2 views
0

Я думал, что собственный код был кодом, который был разработан для работы на определенной машине. Так что меня смущает, как можно запускать C/C++ на других платформах и машинах? Единственное, что я могу придумать, это то, что им понадобится совсем другой компилятор, который бы скомпилировал код в код, специфичный для машины. Я просто смущен, когда C/C++ называются родными.Если C/C++ - это родные языки, то как их можно использовать на компьютерах Mac?

+7

«Единственное, что я могу придумать, это то, что им понадобится совсем другой компилятор, который бы скомпилировал код в код, специфичный для машины» - Bingo! –

+0

Duh. Да, вам нужен компилятор, ориентированный на набор инструкций процессора и, в меньшей степени, ориентированный на модель процесса ОС. –

+0

(Помните, что «Mac» охватывает несколько разных и несовместимых моделей процессоров.) –

ответ

8

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

Вы ответили на свой вопрос ! Компилятор - это часть, которая генерирует машинный код, который целевая платформа понимает и выполняет.

Когда люди говорят «родной язык», они обычно означают, что язык переводится (компилируется) в машинный код, а не в какую-либо промежуточную форму (например, байт-код для Java) или выполняется интерпретатором (например, Perl).

+0

Итак, для java у вас может быть один и тот же компилятор для всех платформ, так как байт-код будет запущен в JVM и если JVM создан для этой платформы, то вуаля. Это правильно? – TheMAAAN

+2

С Java нет встроенного компилятора, только бит, который переводит Java в байт-код. JVM написан на родном языке и скомпилирован для целевой платформы. Таким образом, вы можете запускать любую Java-программу на любой платформе, если для этой платформы существует JVM. Сам код Java не зависит от платформы, поскольку он выполняется JVM, в котором живет конкретный материал для конкретной платформы. –

+0

Даже с Java вам по-прежнему нужна другая JVM для каждой другой платформы. Вы не можете убежать от того, что в какой-то момент основной исполняемый код отличается для каждой архитектуры. – Galik

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

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