Начинающий программист

как сделать вот это? Я только начинаю программировать и меня всегда интересовал вопрос как именно из кода получаются exe файлы. Решение этой проблемы очень бы помогловведите сюда описание изображения


Ответы (1 шт):

Автор решения: Alex Krass

Начальный этап загрузки компьютера

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

Загрузка операционной системы

Загрузчик ОС загружает в память другие части системы: ядро, драйвера устройств, утилиты и так далее. В конце концов у вас стартует операционная система. Операционная система состоит из множества компонентов, в том числе она умеет читать данные с жесткого диска и рисовать графический интерфейс.

Загрузка программ в память и исполнение

Дальше проще, ваш код как правило представляет из себя обычный файл, который оформлен определенным образом. Операционная система читает заголовок (первые строки) этого файла и понимает, что он из себя представляет. Таким образом она определяет, что файл *.exe и его можно запускать. Или *.msi. Или любой другой файл, который можно выполнить. Переводом кода в инструкции процессора и оформление файла занимаются компиляторы - уже написанные специальные программы.

А дальше просто, ваша система загружает в память этот *.exe и выполняет его с некоторыми ограничениями, поскольку операционная система следит за вызовами и управляет выполнением. Но по факту все так же - указатель на начало и дальше процессор читает по шагам инструкции. Так же вы можете "попросить" операционную систему выполнить некоторую работу. Одна из них - это показать окошко и другие элементы графического интерфейса. Писать самому окошки не приходится.

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

Немного о Java, раз уж она в тегах

Иногда ОС передает файл на выполнение другим программам. К примеру, если вы нажмете на *.txt, то операционная система посмотрит, какому *.exe этот файл передать и вызовет этот *.exe передав файл (тот же блокнот notepad.exe получит файл *.txt и отобразит его содержание). Примерно так же работает программы на Java, они не выполняются напрямую, а выполняются через JVM (виртуальную машину Java). Поэтому на Java вы не встретите *.exe файлов.

Больше информации

Подробнее обо всем этом можно написать книгу, что в принципе уже было сделано: (для примера в магазине Ozon: Эндрю Таненбаум - Архитектура компьютера)

P.S.> Обычно программиста эти детали не волнуют, он пишет код и получает результат. Если нужен графический интерфейс, то смотрят как использовать GUI-библиотеку на языке, на котором пишут.

→ Ссылка