Исполняемый файл
Исполня́емый файл — набор инструкций, который заставляет компьютер выполнить определённую задачу. В отличие от текстового файла, который рассчитан на чтение человеком, исполняемый файл рассчитан на чтение (и выполнение) процессором.

Под «инструкциями» традиционно понимается машинный код, который выполняется напрямую физическим процессором. В некоторых случаях файл, содержащий инструкции сценария промежуточного языка программирования (например, байт-код), также может считаться исполняемым.
Создание исполняемых файлов
Исполняемые файлы могут быть созданы вручную на машинном языке, но этот подход обычно не используется из-за отсутствия как такового синтаксиса и удобочитаемости кода, поэтому гораздо удобнее разрабатывать исполняемые программы на языке программирования высокого уровня, который доступен для понимания. В некоторых случаях исходный код может быть на языке ассемблера, который остается удобочитаемым, но при этом предназначен для работы с инструкциями машинного кода.
Код на языке высокого уровня компилируется в объектные файлы машинного кода, которые не являются исполняемыми. После код может быть скомпонован в исполняемый файл. Этот процесс на языке ассемблера называется линковкой. Объектные файлы в зависимости от операционной системы обычно хранятся в формате контейнера (при котором различные данные содержатся в одном файле), таком как Executable and Linkable Format (ELF) для Unix-подобных систем или Portable Executable (PE) для Windows. Это придает структуру машинному коду, разделяя его на секции, такие как (выполняемый код), (инициализированные глобальные и статические переменные) и (данные только для чтения, такие как постоянные и строки).
Исполняемые файлы обычно включают в себя среду выполнения, которая реализует функции языка программирования и компилятора среды выполнения (такие как планирование, обработка исключений, вызов статических конструкторов и деструкторов и т. д.) и взаимодействие с операционной системой, в частности, передача аргументов, окружения и кода возврата, вместе с другими функциями при запуске и завершении программы, которые не были указаны программистом, но представляющие ценность для последующей работы, такие как исполнение ресурсов. В Си это делается путем линковки компоновщиком объектного файла crt0 в исполняемый файл, который содержит точку исполнения, выполняет настройку и завершает работу с помощью вызова библиотеки среды выполнения.
Таким образом, исполняемые файлы обычно содержат дополнительный машинный код, который генерируется компилятором определённым образом из исходного кода. Это в некоторых случаях желательно пропустить, например, для разработки встроенных систем или просто для понимания того, как работают компиляция, линковка и загрузка. В Си пропустить стандартную среду выполнения можно с помощью указания сценария компоновщика напрямую, к примеру, вызвать main функцию для запуска программы и возвратить статус выхода ядру.
Исполнение
Для выполнения операционной системой, прошивкой или , исполняемый файл должен соответствовать бинарному интерфейсу приложений (ABI). В простых интерфейсах файл выполняется путем загрузки в память, перехода (прыжка) к началу адресного пространства и выполнения оттуда. В более сложных интерфейсах исполняемые файлы имеют дополнительные данные, определяющие отдельную точку входа. Например, в ELF точка входа указывается в заголовке e_entry, который указывает (виртуальный) адрес памяти, с которого следует начать выполнение. В GCC вход устанавливается компоновщиком с помощью символа _start.
См. также
- crt0
Примечания
- executable. Merriam-Webster's Online Dictionary. Merriam-Webster. Дата обращения: 19 июля 2008. Архивировано 25 апреля 2009 года.
- Machine Instructions (амер. англ.). GeeksforGeeks (3 ноября 2015). Дата обращения: 18 сентября 2019. Архивировано 21 декабря 2019 года.
- Chapter 4: Object Files. refspecs.linuxbase.org. Дата обращения: 18 сентября 2019.
- Fisher, Tim. List of Executable File Extensions (англ.). lifewire.com. Дата обращения: 18 сентября 2019. Архивировано 11 сентября 2019 года.
- McKellar, Jessica. Hello from a libc-free world! (Part 1) (16 марта 2010). Дата обращения: 17 августа 2021. Архивировано 17 ноября 2016 года.
- Boelen, Michael. The 101 of ELF files on Linux: Understanding and Analysis - Linux... (англ.). Linux Audit (15 мая 2019). Дата обращения: 18 сентября 2019. Архивировано 28 апреля 2019 года.
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Исполняемый файл, Что такое Исполняемый файл? Что означает Исполняемый файл?
Ispolnya emyj fajl nabor instrukcij kotoryj zastavlyaet kompyuter vypolnit opredelyonnuyu zadachu V otlichie ot tekstovogo fajla kotoryj rasschitan na chtenie chelovekom ispolnyaemyj fajl rasschitan na chtenie i vypolnenie processorom Primer shestnadcaterichnogo predstavleniya dannyh v vypolnyaemom fajle Pod instrukciyami tradicionno ponimaetsya mashinnyj kod kotoryj vypolnyaetsya napryamuyu fizicheskim processorom V nekotoryh sluchayah fajl soderzhashij instrukcii scenariya promezhutochnogo yazyka programmirovaniya naprimer bajt kod takzhe mozhet schitatsya ispolnyaemym Sozdanie ispolnyaemyh fajlovIspolnyaemye fajly mogut byt sozdany vruchnuyu na mashinnom yazyke no etot podhod obychno ne ispolzuetsya iz za otsutstviya kak takovogo sintaksisa i udobochitaemosti koda poetomu gorazdo udobnee razrabatyvat ispolnyaemye programmy na yazyke programmirovaniya vysokogo urovnya kotoryj dostupen dlya ponimaniya V nekotoryh sluchayah ishodnyj kod mozhet byt na yazyke assemblera kotoryj ostaetsya udobochitaemym no pri etom prednaznachen dlya raboty s instrukciyami mashinnogo koda Kod na yazyke vysokogo urovnya kompiliruetsya v obektnye fajly mashinnogo koda kotorye ne yavlyayutsya ispolnyaemymi Posle kod mozhet byt skomponovan v ispolnyaemyj fajl Etot process na yazyke assemblera nazyvaetsya linkovkoj Obektnye fajly v zavisimosti ot operacionnoj sistemy obychno hranyatsya v formate kontejnera pri kotorom razlichnye dannye soderzhatsya v odnom fajle takom kak Executable and Linkable Format ELF dlya Unix podobnyh sistem ili Portable Executable PE dlya Windows Eto pridaet strukturu mashinnomu kodu razdelyaya ego na sekcii takie kak vypolnyaemyj kod inicializirovannye globalnye i staticheskie peremennye i dannye tolko dlya chteniya takie kak postoyannye i stroki Ispolnyaemye fajly obychno vklyuchayut v sebya sredu vypolneniya kotoraya realizuet funkcii yazyka programmirovaniya i kompilyatora sredy vypolneniya takie kak planirovanie obrabotka isklyuchenij vyzov staticheskih konstruktorov i destruktorov i t d i vzaimodejstvie s operacionnoj sistemoj v chastnosti peredacha argumentov okruzheniya i koda vozvrata vmeste s drugimi funkciyami pri zapuske i zavershenii programmy kotorye ne byli ukazany programmistom no predstavlyayushie cennost dlya posleduyushej raboty takie kak ispolnenie resursov V Si eto delaetsya putem linkovki komponovshikom obektnogo fajla crt0 v ispolnyaemyj fajl kotoryj soderzhit tochku ispolneniya vypolnyaet nastrojku i zavershaet rabotu s pomoshyu vyzova biblioteki sredy vypolneniya Takim obrazom ispolnyaemye fajly obychno soderzhat dopolnitelnyj mashinnyj kod kotoryj generiruetsya kompilyatorom opredelyonnym obrazom iz ishodnogo koda Eto v nekotoryh sluchayah zhelatelno propustit naprimer dlya razrabotki vstroennyh sistem ili prosto dlya ponimaniya togo kak rabotayut kompilyaciya linkovka i zagruzka V Si propustit standartnuyu sredu vypolneniya mozhno s pomoshyu ukazaniya scenariya komponovshika napryamuyu k primeru vyzvat main funkciyu dlya zapuska programmy i vozvratit status vyhoda yadru IspolnenieDlya vypolneniya operacionnoj sistemoj proshivkoj ili ispolnyaemyj fajl dolzhen sootvetstvovat binarnomu interfejsu prilozhenij ABI V prostyh interfejsah fajl vypolnyaetsya putem zagruzki v pamyat perehoda pryzhka k nachalu adresnogo prostranstva i vypolneniya ottuda V bolee slozhnyh interfejsah ispolnyaemye fajly imeyut dopolnitelnye dannye opredelyayushie otdelnuyu tochku vhoda Naprimer v ELF tochka vhoda ukazyvaetsya v zagolovke e entry kotoryj ukazyvaet virtualnyj adres pamyati s kotorogo sleduet nachat vypolnenie V GCC vhod ustanavlivaetsya komponovshikom s pomoshyu simvola start Sm takzhecrt0Primechaniyaexecutable neopr Merriam Webster s Online Dictionary Merriam Webster Data obrasheniya 19 iyulya 2008 Arhivirovano 25 aprelya 2009 goda Machine Instructions amer angl GeeksforGeeks 3 noyabrya 2015 Data obrasheniya 18 sentyabrya 2019 Arhivirovano 21 dekabrya 2019 goda Chapter 4 Object Files neopr refspecs linuxbase org Data obrasheniya 18 sentyabrya 2019 Fisher Tim List of Executable File Extensions angl lifewire com Data obrasheniya 18 sentyabrya 2019 Arhivirovano 11 sentyabrya 2019 goda McKellar Jessica Hello from a libc free world Part 1 neopr 16 marta 2010 Data obrasheniya 17 avgusta 2021 Arhivirovano 17 noyabrya 2016 goda Boelen Michael The 101 of ELF files on Linux Understanding and Analysis Linux angl Linux Audit 15 maya 2019 Data obrasheniya 18 sentyabrya 2019 Arhivirovano 28 aprelya 2019 goda
