Jump to content

Исполняемый файл

(Перенаправлено из программы Object )

Шестнадцатеричный дамп исполняемого загрузчика реального режима . Первый столбец состоит из адресов первого байта во втором столбце, который содержит байты данных в шестнадцатеричном формате ( первый младший байт ), а последний столбец состоит из соответствующей формы ASCII . [1]

В информатике , исполняемый код исполняемый файл или исполняемая программа , иногда просто называемые исполняемым или двоичным файлом , заставляют компьютер «выполнять указанные задачи в соответствии с закодированными инструкциями ». [2] в отличие от файла данных , который должен быть интерпретирован ( анализирован ) интерпретатором, чтобы быть функциональным. [3]

Точная интерпретация зависит от использования. Под «инструкциями» традиционно понимаются инструкции машинного кода для физического процессора . [4] В некоторых контекстах файл, содержащий инструкции сценария (например, байт-код ), также может считаться исполняемым.

Генерация исполняемых файлов

[ редактировать ]

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

Язык высокого уровня компилируется либо в файл исполняемого машинного кода, либо в неисполняемый файл машинного кода – объектный файл в какой-то ; эквивалентный процесс в исходном коде языка ассемблера называется сборкой . Несколько объектных файлов связаны для создания исполняемого файла. Объектные файлы, исполняемые или нет, обычно хранятся в контейнерном формате , таком как исполняемый и связываемый формат (ELF) или переносимый исполняемый файл (PE), который зависит от операционной системы . [5] Это придает структуру сгенерированному машинному коду, например, разделяя его на такие разделы, как .text (исполняемый код), .data (инициализированные глобальные и статические переменные) и .rodata (данные только для чтения, такие как константы и строки).

Исполняемые файлы обычно также включают в себя систему времени выполнения , которая реализует функции языка времени выполнения (такие как планирование задач , обработка исключений , вызов статических конструкторов и деструкторов и т. д.) и взаимодействие с операционной системой, в частности, передачу аргументов, среды и возврат статуса выхода. вместе с другими функциями запуска и завершения работы, такими как освобождение ресурсов, таких как дескрипторы файлов . Для C это делается путем связывания объекта crt0 , который содержит фактическую точку входа и выполняет настройку и завершение работы путем вызова библиотеки времени выполнения . [6]

Таким образом, исполняемые файлы обычно содержат значительный дополнительный машинный код помимо того, который непосредственно сгенерирован из конкретного исходного кода. В некоторых случаях желательно это опустить, например при разработке встроенных систем, или просто чтобы понять, как работают компиляция, компоновка и загрузка. В C это можно сделать, опустив обычную среду выполнения и вместо этого явно указав сценарий компоновщика, который генерирует точку входа и обрабатывает запуск и завершение работы, например вызов main для запуска и возврата статуса выхода ядру в конце. [7]

Исполнение

[ редактировать ]

Для того, чтобы система выполнялась (например, операционная система , прошивка [ нужна ссылка ] или загрузчик ), исполняемый файл должен соответствовать двоичному интерфейсу системного приложения (ABI). В простых интерфейсах файл исполняется путем загрузки его в память, перехода к началу адресного пространства и выполнения оттуда. [8] В более сложных интерфейсах исполняемые файлы имеют дополнительные метаданные, определяющие отдельную точку входа . Например, в ELF точка входа определяется в заголовке. e_entry поле, в котором указывается адрес (виртуальной) памяти, с которого следует начать выполнение. [9] В коллекции компиляторов GNU это поле задается компоновщиком на основе _start символ. [10]

См. также

[ редактировать ]
  1. ^ Челови, Пол (2002). Встроенная кулинарная книга FreeBSD . Эльзевир . стр. 108, 187–188. ISBN  1-5899-5004-6 . Проверено 06 марта 2022 г.
  2. ^ «исполняемый» . Интернет-словарь Мерриам-Вебстера . Мерриам-Вебстер . Проверено 19 июля 2008 г.
  3. ^ Мюллер, Джон Пол (2007). Администрирование Windows из командной строки для Windows Vista, Windows 2003, Windows XP и Windows 2000 . Джон Уайли и сыновья . п. 24. ISBN  978-0-470-04616-6 . Проверено 6 марта 2023 г.
  4. ^ «Машинные инструкции» . Гики для Гиков . 03.11.2015 . Проверено 18 сентября 2019 г.
  5. ^ «Глава 4: Объектные файлы» . refspecs.linuxbase.org . Проверено 18 сентября 2019 г.
  6. ^ Фишер, Тим. «Список расширений исполняемых файлов» . lifewire.com . Проверено 18 сентября 2019 г.
  7. ^ МакКеллар, Джессика (16 марта 2010 г.). «Привет из мира, свободного от libc! (Часть 1)» .
  8. ^ Смит, Джеймс Э .; Наир, Рави (16 мая 2005 г.). «Архитектура виртуальных машин». Компьютер . 38 (5): 33–34. дои : 10.1109/MC.2005.173 .
  9. ^ Руслинг, Дэвид А. (1999). «Глава 4 – Процессы» . Ядро Linux . сек. 4.8.1 – ЭЛЬФ . Проверено 6 марта 2023 г.
  10. ^ Пейдж, Дэниел (2009). Практическое введение в архитектуру компьютера . Springer Science+Business Media . стр. 415–416. ISBN  978-1-84882-255-9 . Проверено 6 марта 2023 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: eee8ad0f555c95801ce9d031c740026b__1718569620
URL1:https://arc.ask3.ru/arc/aa/ee/6b/eee8ad0f555c95801ce9d031c740026b.html
Заголовок, (Title) документа по адресу, URL1:
Executable - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)