Очень основные проблемы компиляции - пожалуйста, помогите! - PullRequest
0 голосов
/ 21 марта 2011

(1) В итоге: что нужно для того, чтобы программа могла быть запущена в конкретной операционной системе? машинный код, язык ассемблера?

(2) Должен ли он быть машиночитаемым, чтобы его мог выполнять какой-либо процессор?

(3) Какую роль играет операционная система при выполнении программы? Это как-то связано с тем, что система помогает интерпретировать программный код?

(4) И в свете ПК с Windows, необходимо ли, чтобы все программы были .exe, чтобы быть исполняемыми? Почему виртуальная машина Java?

(5) Как работает декомпилятор? В чем разница между программами, скомпилированными для машинного кода и языка ассемблера?

Большое спасибо !!

1 Ответ

1 голос
/ 21 марта 2011
  1. Это полностью зависит от операционной системы. Теоретически, у вас может быть ОС, которая интерпретирует исходный код COBOL на лету. Но обычно вам нужны исполняемые файлы определенного формата, которые ОС может загружать в память и запускать. Итак, машинный код это.

  2. Опять же, это зависит от процессора. Подавляющее большинство (все, кого я знаю) будут использовать свой собственный машинный код.

  3. ОС предоставляет метод для запуска ваших приложений и предоставляет службы поддержки этим приложениям.

  4. Нет. Если вы хотите, чтобы они выполнялись, они должны быть определенного формата, но это не обязательно означает расширение exe. И хотя вы думаете, вы используете файл класса Java, в действительности вы используете JVM, который является исполняемым файлом. Просто происходит интерпретация файла класса (игнорирование JIT для простоты, что превращает байт-коды Java в необработанный машинный код для эффективности. Вы можете «выполнять» файлы классов Java, сценарии Powershell, cmd сценарии и т. Д.

  5. Декомпилятор пытается превратить скомпилированный файл (EXE, файл класса, байт-код Python и т. Д.) Обратно в исходную форму или, по крайней мере, что-то близкое к этому.

...