Файл содержащий программу в виде в котором она может быть исполнена компьютером это модуль
Формат файла, формат данных — спецификация структуры данных, записанных в компьютерном файле. Идентификатор формата файла, как правило, указывается в конце имени файла в виде «расширения». Расширение имени файла помогает идентифицировать формат данных, содержащихся в файле, программам, которые могут с ним работать. Иногда формат данных дополнительно указывается в начале содержимого файла.
Исполняемый файл (англ. executable file, также выполняемый, реже исполнимый, выполнимый) — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек).
Заголовочный файл в общем случае может содержать любые конструкции языка программирования, но на практике исполняемый код (за исключением inline-функций в C++) в заголовочные файлы не помещают. Например, идентификаторы, которые должны быть объявлены более чем в одном файле, удобно описать в заголовочном файле, а затем его подключать по мере надобности. Подобным же образом работает модульность и в большинстве ассемблеров.
Те́кстовый реда́ктор — самостоятельная компьютерная программа или компонент программного комплекса (например, редактор исходного кода интегрированной среды разработки или окно ввода в браузере), предназначенная для создания и изменения текстовых данных в общем и текстовых файлов в частности.
Это список сигнатур файлов, данных, используемых для идентификации или проверки содержимого файла. Эти сигнатуры также известны как магические числа.
Отладочные символы или debug символы — информация, которую компилятор языка программирования генерирует автоматически на основе исходных кодов. Это специфичный кусок машинного кода, описывающий текущий исполняемый модуль. Отладочная информация может компилироваться вместе с бинарным исполняемым файлом, и входить в его состав, может присутствовать в качестве отдельного файла, либо же просто отбрасываться на этапе компиляции и/или линковки. Эта информация позволяет человеку использовать «символические.
Библиоте́ка (от англ. library) в программировании — сборник подпрограмм или объектов, используемых для разработки программного обеспечения (ПО).
Сбо́рка (англ. build) (имя существительное) — подготовленный для использования информационный продукт. Чаще всего сборка — исполняемый файл — двоичный файл, содержащий исполняемый код (машинные инструкции) программы или библиотеки.
Последовательные файлы — файлы, хранящие информацию в неструктурированном (для поиска и обращения) виде. Поиск в таких файлах осуществляется последовательным считыванием файла с начала и сравнением «всего» с искомым. Так же и обращение к определённому участку файла каждый раз требует «чтения с начала».
Те́кстовый файл — компьютерный файл, содержащий текстовые данные. Текстовым файлам противопоставляются двоичные (бинарные) файлы, в которых содержатся данные, не рассчитанные на интерпретацию в качестве текстовых (например, файлы, хранящие текст в закодированном или сжатом виде, или хранящие не текст, а звук, изображение или иные данные).
Ассоциация или ассоциирование файлов — в программном обеспечении привязывание файла (по расширению или по каким-либо другим признакам) к прикладной программе, которая обрабатывает эти файлы. При «вызове» этого файла, например, в файловом менеджере, вызовется связанная с ним программа и откроет файл.
Сценарий кома́ндной стрoки, или сценарий командной оболочки, (англ. shell script) — программа, выполняемая командной оболочкой операционной системы. Наиболее часто термин применяется к скриптам, написанным для Bourne shell — программной оболочки систем UNIX.
Компоновщик (также редактор связей, от англ. link editor, linker) — инструментальная программа, которая производит компоновку («линковку»): принимает на вход один или несколько объектных модулей и собирает по ним исполнимый модуль.
Упако́вка исполняемых фа́йлов заключается в сжатии исполняемого файла и прикреплении к нему кода, необходимого для распаковки и выполнения содержимого файла. Упаковка применяется по ряду причин.
Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имен файлов (и каталогов), максимальный возможный размер файла и раздела, набор.
Сниппет (англ. snippet — отрывок, фрагмент) — фрагмент исходного текста или кода программы, применяемый в поисковых системах, текстовых редакторах и средах разработки.
Макрокоманда, макроопределение или мáкрос — программный алгоритм действий, записанный пользователем. Часто макросы применяют для выполнения рутинных действий. А также макрос — это символьное имя в шаблонах, заменяемое при обработке препроцессором на последовательность символов, например: фрагмент html-страницы в веб-шаблонах, или одно слово из словаря синонимов в синонимизаторах.
Конвертация данных — преобразование данных из одного формата в другой. Обычно с сохранением основного логически-структурного содержания информации. В сфере компьютерных технологий есть множество вариантов представления данных. Например, компьютерное оборудование построено на основе определенных стандартов, которые требуют, чтобы данные содержали, к примеру, проверку бита четности. Точно так же операционная система утверждена по определенным стандартам касательно обработки файлов и данных. Кроме того.
Вебтоп — интерфейс рабочего стола, встроенного в браузер или подобное приложение-клиент. Вебтоп объединяет в себе веб-приложения, веб-сервисы, клиент-серверные приложения, серверы приложений. Вебтоп представляет собой рабочий стол, похожий на Windows, Mac, или графический интерфейс на системах Linux или Unix, работающий внутри браузера как обычный веб-сайт. Внутри него, приложения, данные, файлы и настройки сохраняются на сервере и при необходимости передаются в вебтоп. Браузер, в таком случае, в.
Расширение имени файла (англ. filename extension, часто говорят просто расширение файла или расширение) — последовательность символов, добавляемых к имени файла и предназначенных для идентификации типа (формата) файла. Это один из распространённых способов, с помощью которых пользователь или программное обеспечение компьютера может определить тип данных, хранящихся в файле, например: имя.jpg это фотографии, имя.avi - видео и т.п.
Кодовая база (в программировании, англ. code base) — исходный код (текст), необходимый для сборки отдельной программы или её компонента. Кодовая база обычно включает исходный код, написанный программистами, не содержит код, созданный автоматически специализированными инструментами, не содержит двоичные файлы библиотек, может содержать файлы конфигурации.
Encrypting File System (EFS) — система шифрования данных, реализующая шифрование на уровне файлов в операционных системах Microsoft Windows NT (начиная с Windows 2000 и выше), за исключением «домашних» версий (Windows XP Home Edition, Windows Vista Basic, Windows Vista Home Premium, Windows 7 Starter (Home Basic и Premium), Windows 10 Home). Данная система предоставляет возможность «прозрачного шифрования» данных, хранящихся на разделах с файловой системой NTFS, для защиты потенциально конфиденциальных.
Объе́ктный мо́дуль (также — объектный файл, англ. object file) — файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код (часто называемый двоичным или бинарным), который может быть объединён с другими объектными файлами при помощи редактора связей (компоновщика) для получения готового исполнимого модуля либо библиотеки.
Пла́гин (англ. plug-in, от plug in «подключать») — независимо компилируемый программный модуль, динамически подключаемый к основной программе и предназначенный для расширения и/или использования её возможностей. Плагины обычно выполняются в виде библиотек общего пользования.
Дизассе́мблер (от англ. disassembler ) — транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера.
Метафайл (англ. Metafile) — это общий термин для формата файлов, которые могут дополнительно хранить в себе и данные (доп. сведения) о хранимых в них (файлах) данных — сведения, которые в обычном режиме просмотра содержимого скрыты от пользователя.
Те́кстовые да́нные (также те́кстовый форма́т) — представление информации строкового типа (то есть, последовательности печатных символов) в вычислительной системе. В MIME закодированным таким образом данным соответствует тип text/plain.
Формат вычисляемых документов (Computable Document Format или CDF) — это электронный формат документов, созданный с целью облегчения создания динамически сгенерированного интерактивного контента. Формат разработан компанией Wolfram Research.
Веб-страница (англ. Web page) — документ или информационный ресурс Всемирной паутины, доступ к которому осуществляется с помощью веб-браузера. Типичная веб-страница представляет собой текстовый файл в формате HTML, который может содержать ссылки на файлы в других форматах (текст, графические изображения, видео, аудио, мультимедиа, апплеты, прикладные программы, базы данных, веб-службы и прочее), а также гиперссылки для быстрого перехода на другие веб-страницы или доступа к ссылочным файлам. Многие.
Файл регистрации (протокол, журнал, лог; англ. log) — файл с записями о событиях в хронологическом порядке, простейшее средство обеспечения журналирования. Различают регистрацию внешних событий и протоколирование работы самой программы — источника записей (хотя часто всё записывается в единый файл).
Редактором тегов называют программное обеспечение, используемое для указания и редактирования только тегов файлов мультимедийных форматов. В основном такие редакторы работают с аудиофайлами, например ID3, APEv2 или комментариями Vorbis, но встречаются и инструменты для работы с метаданными файлов JPEG, PDF и TIFF.
Декомпиля́тор — это программа, транслирующая исполняемый модуль (полученный на выходе компилятора) в эквивалентный исходный код на языке программирования высокого уровня.
Одностраничное приложение (англ. single page application, SPA) — это веб-приложение или веб-сайт, использующий единственный HTML-документ как оболочку для всех веб-страниц и организующий взаимодействие с пользователем через динамически подгружаемые HTML, CSS, JavaScript, обычно посредством AJAX.
Бу́фер обме́на (англ. clipboard) — промежуточное хранилище данных, предоставляемое программным обеспечением и предназначенное для переноса или копирования между приложениями или частями одного приложения через операции вырезать, копировать, вставить.
Архиватор — программа, предназначенная для упаковки без потерь одного и более файлов в единый файл-архив или в серию архивов для удобства переноса и/или хранения данных. Распаковка архивов выполняется с помощью того же архиватора либо посредством сторонних совместимых утилит. Большинство современных архиваторов также выполняет сжатие упаковываемых в архив данных.
В приведенных ниже таблицах сравнивается поддержка API рисования элемента Canvas, являющегося особенностью HTML5. Эти таблицы отображают уровень поддержки веб-браузерами без использования дополнительных плагинов, расширений и заплаток на ECMAScript.
Конфигурация программного обеспечения — совокупность настроек программы, задаваемая пользователем, а также процесс изменения этих настроек в соответствии с нуждами пользователя.
Блокнот (англ. Notepad) — простой текстовый редактор, являющийся частью операционных систем Microsoft Windows, начиная с вышедшей в 1985 году Windows 1.0.
Оболо́чка операцио́нной систе́мы (от англ. shell «оболочка») — интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.
Двоичная трансляция делится на статическую и динамическую. Динамическая компиляция происходит незаметно для пользователя, при запуске приложения. Статический компилятор делает из двоичного кода исходной архитектуры готовое полноценное приложение для целевой архитектуры. При статической ДТ весь исходный исполняемый файл транслируется в исполнимый файл для целевой архитектуры. Это весьма непростая задача - выполнить данную трансляцию абсолютно корректно, так как не весь код сразу считывается транслятором.
Статический сайт — сайт, состоящий из статичных html (htm, dhtml, xhtml) страниц, составляющих единое целое. Содержит в себе (в виде HTML-размеченных) текст, изображения, мультимедиа содержимое (аудио, видео) и HTML-теги. Теги бывают как служебные, предназначенные для обозревателя, так и предназначенные для размещения, формирования внешнего вида и отображения информации. Все изменения на сайт вносятся в исходный код документов (страниц) сайта, для чего необходимо иметь доступ к файлам на веб сервере.
Интерпретатор (англ. interpreter ıntə:'prıtə, от лат. interpretator - толкователь) — программа (разновидность транслятора), выполняющая интерпретацию.
Корзи́на — элемент графического интерфейса пользователя, предназначенный для удаления и, часто, временного хранения удалённых объектов (в некоторых реализациях — только файлов и каталогов). Корзина в ряде систем позволяет восстановить недавно удалённый объект в случае ошибки или недоразумения пользователя.
Общий формат данных для биомедицинских сигналов (General Data Format for Biomedical Signals, GDF) — это научный и медицинский формат файла. Целью GDF является объединение и интегрирование лучших черт всех форматов файлов для хранения биомедицинских сигналов в один формат - GDF.Первоначальная спецификация GDF была представлена в 2005 году как новый формат данных с целью преодоления некоторых ограничений популярного Европейского формата данных для биомедицинских сигналов (EDF). GDF был также разработан.
Страничная память — способ организации виртуальной памяти, при котором единицей отображения виртуальных адресов на физические является регион постоянного размера (т. н. страница). Типичный размер страницы — 4096 байт, для некоторых архитектур — до 128 КБ.
Исполни́мый (исполня́емый) мо́дуль (также исполнимый файл, англ. executable file ) — это разновидность файла, содержимое которого является готовой к непосредственному исполнению компьютерной программой.
Чаще всего он содержит двоичное представление машинных инструкций для определённого процессора. (По этой причине на программистском сленге в отношении него используют слово бинарник — кальку с английского binary, но может содержать и инструкции на интерпретируемом языке программирования, для исполнения которых требуется интерпретатор. В отношении последних часто используется термин скрипт.)
Исполнением бинарных файлов занимаются аппаратно- и программно-реализованные машины. К первым относится центральные процессоры, ко вторым — виртуальные машины, например, виртуальная машина Java. Формат бинарного файла определяется архитектурой исполняющей его машины. (Обзор форматов содержится в статье об объектных модулях.) Известны машины, реализованные как аппаратно, так и программно, например, и виртуальная машина VMWare.
Статус исполнимости файла чаще всего определяется принятыми соглашениями. Так, в одних операционных системах исполнимые файлы распознаются благодаря соглашению об именовании файлов (например, путем указания в имени расширения файла — «.exe» или «.bin»), тогда как в других исполнимые файлы обладают специфичными метаданными (например, битом разрешения «execute» в
В современных компьютерных архитектурах исполнимые файлы содержат большие объемы данных, не являющихся компьютерной программой: описание программного окружения, в котором программа может быть выполнена, данные для отладки программы, используемые константы, данные, которые могут потребоваться операционной системе для запуска процесса (например, рекомендуемый размер кучи), и даже описания структур окон графической подсистемы, используемых программой.
Зачастую исполнимые файлы содержат вызовы библиотечных функций, например, вызовы функций операционной системы. Таким образом, наряду с процессорозависимостью (машинозависимым является любой исполнимый файл) исполнимым файлам может быть свойственна зависимость от операционной системы.
См. также
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое "Исполняемый файл" в других словарях:
Исполняемый файл — файл, который может быть обработан или выполнен компьютером без предварительной трансляции. Обычно исполняемый файл: получается в результате трансляции и компоновки объектных модулей; содержит машинные команды и/или команды операционной системы.… … Финансовый словарь
файл — поименованная совокупность байтов, записанная на жёстком или гибком магнитном диске, в которой хранится отдельный элемент файловой системы, напр. документ Word или рисунок. Вся информация, записанная на магнитный диск, представлена блоками байтов … Энциклопедия техники
Файл заголовков — Заголовочный файл (иногда головной файл, англ. header file) (или подключаемый файл) в языках программирования Си и C++ файл, содержащий определения типов данных, структуры, прототипы функций, перечисления, макросы препроцессора. Имеет по… … Википедия
исполняемый код — 3.4. исполняемый код : Файл, установленный в вычислительном компоненте СИ, электронном устройстве или его части (ПЗУ, жесткий диск и т.д.). Микропроцессор интерпретирует содержимое файла (код) и преобразует его в определенные логические,… … Словарь-справочник терминов нормативно-технической документации
Исполняемый модуль — Исполнимый (исполняемый) модуль (также исполнимый файл, англ. executable file) это разновидность файла, содержимое которого является готовой к непосредственному исполнению компьютерной программой. Чаще всего он содержит двоичное представление… … Википедия
Заголовочный файл — (иногда головной файл, англ. header file), или подключаемый файл в языках программирования файл, механически «вставляемый» компилятором в исходный текст в том месте, где располагается некоторая директива ( в Паскале,… … Википедия
SafeDisc — Работа с оптическими дисками Оптический диск Образ оптического диска, ISO образ Эмулятор оптических дисководов Программное обеспечение для работы с файловыми системами оптических дисков Технологии записи Режимы записи Пакетная запись Типы… … Википедия
SafeDisk — SafeDisc это система защиты от копирования для Windows приложений и игр, разработанная Macrovision Corporation. Содержание 1 Цели 2 Уязвимости 3 История версий 3.1 SafeDisc (V1) … Википедия
Portable Executable — Переносимый исполняемый файл Расширение .exe, .dll, .ocx, .sys, .scr, .drv, .cpl Сигнатура MZ (опционально), PE Разработан Microsoft Тип формата двоичный, исполняемый, объектный … Википедия
Взлом программного обеспечения — (англ. software cracking) действия, направленные на устранение защиты программного обеспечения (ПО), встроенной разработчиками для ограничения функциональных возможностей. Последнее необходимо для стимуляции покупки такого… … Википедия
Исполни́мый (исполня́емый) мо́дуль (также исполнимый файл, англ. executable file ) — это разновидность файла, содержимое которого является готовой к непосредственному исполнению компьютерной программой.
Чаще всего он содержит двоичное представление машинных инструкций для определённого процессора. (По этой причине на программистском сленге в отношении него используют слово бинарник — кальку с английского binary, но может содержать и инструкции на интерпретируемом языке программирования, для исполнения которых требуется интерпретатор. В отношении последних часто используется термин скрипт.)
Исполнением бинарных файлов занимаются аппаратно- и программно-реализованные машины. К первым относится центральные процессоры, ко вторым — виртуальные машины, например, виртуальная машина Java. Формат бинарного файла определяется архитектурой исполняющей его машины. (Обзор форматов содержится в статье об объектных модулях.) Известны машины, реализованные как аппаратно, так и программно, например, и виртуальная машина VMWare.
Статус исполнимости файла чаще всего определяется принятыми соглашениями. Так, в одних операционных системах исполнимые файлы распознаются благодаря соглашению об именовании файлов (например, путем указания в имени расширения файла — «.exe» или «.bin»), тогда как в других исполнимые файлы обладают специфичными метаданными (например, битом разрешения «execute» в
В современных компьютерных архитектурах исполнимые файлы содержат большие объемы данных, не являющихся компьютерной программой: описание программного окружения, в котором программа может быть выполнена, данные для отладки программы, используемые константы, данные, которые могут потребоваться операционной системе для запуска процесса (например, рекомендуемый размер кучи), и даже описания структур окон графической подсистемы, используемых программой.
Зачастую исполнимые файлы содержат вызовы библиотечных функций, например, вызовы функций операционной системы. Таким образом, наряду с процессорозависимостью (машинозависимым является любой исполнимый файл) исполнимым файлам может быть свойственна зависимость от операционной системы.
См. также
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое "Исполняемый модуль" в других словарях:
Декомпиляция — Декомпилятор это программа, транслирующая исполняемый модуль (полученный на выходе компилятора) в относительно эквивалентный исходный код на языке программирования высокого уровня. Для сравнения, дизассемблер транслирует исполняемый модуль… … Википедия
Макроассемблер — Эта статья о компьютерных программах, о языке программирования см.: Язык ассемблера Ассемблер (от англ. assembler рабочий сборщик) компьютерная программа, компилятор исходного текста программы написанной на языке ассемблера, в программу на… … Википедия
Исходный код — У этого термина существуют и другие значения, см. Исходный код (фильм). Исходный код HTML страницы со вставкой на языке JavaScript Исходный код (также исходный текст) текст компьютерной программы на каком либо языке программирования или… … Википедия
Исходник — Исходный код, написанный на JavaScript Исходный код (также исходный текст) текст компьютерной программы на каком либо языке программирования. В обобщённом смысле любые входные данные для транслятора. Исходный код либо транслируется в… … Википедия
Исходники — Исходный код, написанный на JavaScript Исходный код (также исходный текст) текст компьютерной программы на каком либо языке программирования. В обобщённом смысле любые входные данные для транслятора. Исходный код либо транслируется в… … Википедия
Исходные тексты — Исходный код, написанный на JavaScript Исходный код (также исходный текст) текст компьютерной программы на каком либо языке программирования. В обобщённом смысле любые входные данные для транслятора. Исходный код либо транслируется в… … Википедия
Исходный текст — Исходный код, написанный на JavaScript Исходный код (также исходный текст) текст компьютерной программы на каком либо языке программирования. В обобщённом смысле любые входные данные для транслятора. Исходный код либо транслируется в… … Википедия
Код (компьютер) — Исходный код, написанный на JavaScript Исходный код (также исходный текст) текст компьютерной программы на каком либо языке программирования. В обобщённом смысле любые входные данные для транслятора. Исходный код либо транслируется в… … Википедия
Исполни́мый (исполня́емый) мо́дуль, исполнимый файл (англ. executable file ) — файл, содержащий программу в виде, в котором она может быть (после загрузки в память и настройки по месту) исполнена компьютером.
Чаще всего он содержит двоичное представление машинных инструкций для определённого процессора (по этой причине на программистском сленге в отношении него используют слово бинарник — кальку с английского binary), но может содержать и инструкции на интерпретируемом языке программирования, для исполнения которых требуется интерпретатор. В отношении последних часто используется термин «скрипт».
Статус исполнимости файла чаще всего определяется принятыми соглашениями. Так, в одних операционных системах исполнимые файлы распознаются благодаря соглашению об именовании файлов (например, путём указания в имени расширения файла — .exe или .bin), тогда как в других исполнимые файлы обладают специфичными метаданными (например, битом разрешения execute в UNIX-подобных операционных системах).
В современных компьютерных архитектурах исполнимые файлы содержат большие объемы данных, не являющихся компьютерной программой: описание программного окружения, в котором программа может быть выполнена, данные для отладки программы, используемые константы, данные, которые могут потребоваться операционной системе для запуска процесса (например, рекомендуемый размер кучи), и даже описания структур окон графической подсистемы, используемых программой.
Зачастую исполнимые файлы содержат вызовы библиотечных функций, например, вызовы функций операционной системы. Таким образом, наряду с процессорозависимостью (машинозависимым является любой бинарный исполнимый файл, содержащий машинный код) исполнимым файлам может быть свойственна зависимость от версии операционной системы и её компонент.
В настоящее время существует большое количество файловых форматов исполняемых файлов для различных операционных систем. При этом документация, хотя и существует, зачастую разрознена или практически недоступна (например, описание формата LX/LE становится всё сложнее и сложнее найти). Плюс к этому различные производители программного обеспечения вводят дополнительные расширения, которые, зачастую, становится трудно сопоставить с оригинальным форматом или они взаимоисключающие.
Данная работа является попыткой составить единый справочник по работе с исполняемыми файлами, их анализа, разбора и создания исполняемого образа, готового для работы в памяти. Скриптовый формат исполняемых файлов оставим на откуп соответствующих руководств по языкам программирования, а рассмотрим именно двоичные форматы.
Развитие машин класса IBM PC привело к появлению новых режимов адресации, появлению виртуальной памяти и прочих механизмов, что делало формат .EXE MZ недостаточно гибким и не приспособленным к реалиям. В частности, многие производители реализовывали так называемые оверлеи, что позволяло осуществлять простейшую подкачку нужных функций в ОЗУ. Плюс, неэффективное использование повторяющегося исполняемого кода привело к реализации библиотек динамического связывания, код которых мог использоваться различными процессами без его дублирования в физической памяти. В итоге формат .EXE был расширен и были реализованы его более современные версии LX/LE и NE.
Формат .EXE NE был разработан Microsoft для применения в операционной системе OS/2 и оболочки Windows. Данный формат ориентирован, как и .EXE MZ, на 16-разрядные среды исполнения. Основная дополнительная функциональность, обеспечиваемая данным форматом - это поддержка .DLL.
С приходом на рынок микропроцессоров 386+ возникла необходимость поддержки 32-разрядного кода, что, естественно, привело к появлению такого формата, как LE (использовался в оболочках семейства Windows 3.x и операционных систем семейства Windows 9x) и LX (использовался в операционной системе OS/2). Данные форматы позволили смешивать как 16-битный код, так и 32-битный. Кроме смешанного кода переходной период также потребовал реализации такого механизма, как thunking, что также наложило отпечаток на данные форматы файлов.
При разработке OS/2 NT 3.0 (в последующем - Windows NT 3.51) был разработан формат .EXE PE, который был предназначен для хранения кода ориентированного на различные аппаратные платформы. В настоящее время данный формат является основным для семейства операционных систем Windows.
В кросс платформенной OS/2 (OS/2 PPC, Workstation OS) конечным форматом файлы был принят формат ELF, о котором будет сказано несколько дальше.
В мире операционных систем семейства Unix также наблюдалось развитие форматов исполняемых файлов. Первый формат, a.out, появился с первой версией UNIX. На наименование повлияла специфика процесса получения двоичного файла. В отличие от систем семейства CP/M, для которых всегда была характерна нехватка памяти, Unix системы позволяли осуществлять полный цикл: компиляция, компиляция, компоновка. a.out - это сокращение от assembler output. Формат a.out по структуре похож на форматы .EXE. За свое существование претерпел ряд модификаций.
С появлением разделяемых библиотек формат a.out из-за ряда ограничений был заменен на формат COFF. Из основных нововведений - это добавление отладочной информации и относительного виртуального адреса, что позволило загружать его по произвольному фактическому адресу. Использование формата COFF в Unix системах в настоящее время ограничено, однако формат .EXE PE является наиболее известным вариантом формата COFF.
Формат COFF был принят не всеми производителями семейства Unix и многие все еще продолжали использовать a.out. Ситуация изменилась с появлением формата ELF. Достаточно удачное решение и учет того, что формат не был ориентирован под специфические особенности определенной архитектуры, он получил широкое распространение. Большинство современных реализаций Unix и ряд других операционных систем используют именно его. Существует также "универсальный" формат ELF, содержащий двоичные образы для большинства различных платформ. Сложно сказать, будет ли формат FatELF широко использован, но если оглянуться на историю подобный "многосистемных" форматов, то, скорее всего, FatELF не получит широкого распространения.
Наличие большого числа форматов, накопившихся со временем, привело к тому, что в конце девяностых годов появилось ряд исследовательских проектов по разработке некоторого "абстрактного" формата файлов а также библиотек, предоставляющих единый интерфейс по доступу к данным любого формата. Причины появление таких инструментов было несколько. Одна из причин - инструментарий для сред разработки. Например, поддержка компоновщиком наибольшего числа форматов. Другая причина - необходимость переноса и запуска двоичных программ на другой аппаратной платформе.
- Объе́ктный мо́дуль (также — объектный файл, англ. object file) — файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код (часто называемый двоичным или бинарным), который может быть объединён с другими объектными файлами при помощи редактора связей (компоновщика) для получения готового исполнимого модуля либо библиотеки.
Объектные файлы представляют собой блоки машинного кода и данных с неопределенными адресами ссылок на данные и процедуры в других объектных модулях, а также список своих процедур и данных. Компоновщик собирает код и данные каждого объектного модуля в итоговую программу, вычисляет и заполняет адреса перекрестных ссылок между модулями.
Связанные понятия
Компоновщик (также редактор связей, от англ. link editor, linker) — инструментальная программа, которая производит компоновку («линковку»): принимает на вход один или несколько объектных модулей и собирает по ним исполнимый модуль.
Исполняемый файл (англ. executable file, также выполняемый, реже исполнимый, выполнимый) — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек).
Среда выполнения (англ. execution environment, иногда «ранта́йм» от англ. runtime — «время выполнения») в информатике — вычислительное окружение, необходимое для выполнения компьютерной программы и доступное во время выполнения компьютерной программы. В среде выполнения, как правило, невозможно изменение исходного текста программы, но может наличествовать доступ к переменным окружения операционной системы, таблицам объектов и модулей разделяемых библиотек.
Макрокоманда, макроопределение или мáкрос — программный алгоритм действий, записанный пользователем. Часто макросы применяют для выполнения рутинных действий. А также макрос — это символьное имя в шаблонах, заменяемое при обработке препроцессором на последовательность символов, например: фрагмент html-страницы в веб-шаблонах, или одно слово из словаря синонимов в синонимизаторах.
Кодогенерация — часть процесса компиляции, когда специальная часть компилятора, кодогенератор, конвертирует синтаксически корректную программу в последовательность инструкций, которые могут выполняться на машине. При этом могут применяться различные, в первую очередь машинно-зависимые оптимизации. Часто кодогенератор является общей частью для множества компиляторов. Каждый из них генерирует промежуточный код, который подаётся на вход кодогенератору.
Упоминания в литературе
Процессы трансляции и выполнения при компиляции делятся во времени: первоначально исходная программа в полном объеме переводится на машинный язык, потом оттранслированная программа может многократно исполняться. Для трансляции методом компиляции нужен неоднократный «просмотр» транслируемой программы, т. е. трансляторы-компиляторы многопроходны. Трансляция методом компиляции именуется объектными модулями . Это эквивалентная программа в машинных кодах. Нужно, чтобы перед исполнением объектный модуль обработался особой программой операционной системы и преобразовался в загрузочный модуль.
Связанные понятия (продолжение)
Интерпретируемый язык программирования — язык программирования, исходный код на котором выполняется методом интерпретации. Классифицируя языки программирования по способу исполнения, к группе интерпретируемых относят языки, в которых операторы программы друг за другом отдельно транслируются и сразу выполняются (интерпретируются) с помощью специальной программы-интерпретатора (что противопоставляется компилируемым языкам, в которых все операторы программы заранее оттранслированы в объектный код.
Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации (структуризации) — восстановление начального состояния структуры данных из битовой последовательности.
Дизассе́мблер (от англ. disassembler ) — транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера.
В программировании термин «директива» (указание) по использованию похож на термин «команда», так как также используется для описания некоторых конструкций языка программирования (то есть указаний компилятору или ассемблеру особенностей обработки при компиляции).
Кросс-компиля́тор (англ. cross compiler) — компилятор, производящий исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор. Такой инструмент бывает полезен, когда нужно получить код для платформы, экземпляров которой нет в наличии, или в случаях когда компиляция на целевой платформе невозможна или нецелесообразна (например, это касается мобильных систем или микроконтроллеров с минимальным объёмом памяти).
Кома́нда — это указание компьютерной программе действовать как некий интерпретатор для решения задачи. В более общем случае, команда — это указание некоему интерфейсу командной строки, такому как shell.
Конте́йнер в программировании — тип, позволяющий инкапсулировать в себе объекты других типов. Контейнеры, в отличие от коллекций, реализуют конкретную структуру данных.
Стандартные потоки ввода-вывода в системах типа UNIX (и некоторых других) — потоки процесса, имеющие номер (дескриптор), зарезервированный для выполнения некоторых «стандартных» функций. Как правило (хотя и не обязательно), эти дескрипторы открыты уже в момент запуска задачи (исполняемого файла).
Код операции, операционный код, опкод — часть машинного языка, называемая инструкцией и определяющая операцию, которая должна быть выполнена.
Механизм копирования при записи (англ. Copy-On-Write, COW) используется для оптимизации многих процессов, происходящих в операционной системе, таких как, например, работа с оперативной памятью или файлами на диске (пример — ext3cow).
Динамическая идентификация типа данных (англ. run-time type information, run-time type identification, RTTI) — механизм в некоторых языках программирования, который позволяет определить тип данных переменной или объекта во время выполнения программы.
Байт-код (байтко́д; англ. bytecode, также иногда p-код, p-code от portable code) — стандартное промежуточное представление, в которое может быть переведена компьютерная программа автоматическими средствами. По сравнению с исходным кодом, удобным для создания и чтения человеком, байт-код — это компактное представление программы, уже прошедшей синтаксический и семантический анализ. В нём в явном виде закодированы типы, области видимости и другие конструкции. С технической точки зрения, байт-код представляет.
Храни́мая процеду́ра — объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам. В хранимых процедурах могут выполняться стандартные операции с.
DLL (англ. Dynamic Link Library — «библиотека динамической компоновки», «динамически подключаемая библиотека») в операционных системах Microsoft Windows и IBM OS/2 — динамическая библиотека, позволяющая многократное использование различными программными приложениями. Эти библиотеки обычно имеют расширение DLL, OCX (для библиотек содержащих ActiveX), или DRV (для ряда системных драйверов). Формат файлов для DLL такой же, как для EXE-файлов Windows, т. е. Portable Executable (PE) для 32-битных и 64-битных.
Переменная среды́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы.
Файловый дескриптор — это неотрицательное целое число. Когда создается новый поток ввода-вывода, ядро возвращает процессу, создавшему поток ввода-вывода, его файловый дескриптор.
Разделяемая память (англ. Shared memory) является самым быстрым средством обмена данными между процессами.
Динамическое распределение памяти — способ выделения оперативной памяти компьютера для объектов в программе, при котором выделение памяти под объект осуществляется во время выполнения программы.
Подсве́тка си́нтаксиса — выделение синтаксических конструкций текста с использованием различных цветов, шрифтов и начертаний.
Библиотека стандартных шаблонов (STL) (англ. Standard Template Library) — набор согласованных обобщённых алгоритмов, контейнеров, средств доступа к их содержимому и различных вспомогательных функций в C++.
Ссылка в программировании — это объект, указывающий на определенные данные, но не хранящий их. Получение объекта по ссылке называется разыменованием.
Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически, когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации.
По умолча́нию — термин, используемый для обозначения значений параметров какой-либо программы, предустановленных разработчиком. Пользователь может изменить эти установки явным образом, однако, если он не сделал этого, то в качестве значений используются параметры, заданные разработчиком.
Модульное тестирование, или юнит-тестирование (англ. unit testing) — процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы, наборы из одного или более программных модулей вместе с соответствующими управляющими данными, процедурами использования и обработки.
Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр.
Монтирование файловой системы — системный процесс, подготавливающий раздел диска к использованию операционной системой.
Блок (также говорят блок кода, блок команд, блок инструкций) в программировании — это логически сгруппированный набор идущих подряд инструкций в исходном коде программы, является основой парадигмы структурного программирования.
Точка монтирования (англ. mount point) — это каталог или файл, с помощью которого обеспечивается доступ к новой файловой системе, каталогу или файлу.
Ошибка сегментации (англ. Segmentation fault, сокр. segfault, жарг. сегфолт) — ошибка программного обеспечения, возникающая при попытке обращения к недоступным для записи участкам памяти либо при попытке изменить память запрещённым способом. В системах на основе процессоров Motorola 68000 эти ошибки, как правило, известны как ошибки адреса или шины.
Интерфейс (англ. interface) — основной шаблон проектирования, являющийся общим методом для структурирования компьютерных программ для того, чтобы их было проще понять. В общем, интерфейс — это класс, который обеспечивает программисту простой или более программно-специфический способ доступа к другим классам.
Подпрограмма (англ. subroutine) — поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы. В языках программирования для оформления и использования подпрограмм существуют специальные синтаксические средства.
Компилируемый язык программирования — язык программирования, исходный код которого преобразуется компилятором в машинный код и записывается в файл с особым заголовком и/или расширением для последующей идентификации этого файла, как исполняемого операционной системой (в отличие от интерпретируемых языков программирования, чьи программы выполняются программой-интерпретатором).
Документа́ция на программное обеспечение — печатные руководства пользователя, диалоговая (оперативная) документация и справочный текст, описывающие, как пользоваться программным продуктом.
Двои́чная совмести́мость, бина́рная совмести́мость (англ. binary compatibility) — вид программной совместимости, позволяющий программе работать в различных средах без изменения её исполняемых файлов.
Конста́нта в программировании — способ адресации данных, изменение которых рассматриваемой программой не предполагается или запрещается.
Безопасность доступа к памяти — концепция в разработке программного обеспечения, целью которой является избежание программных ошибок, которые ведут к уязвимостям, связанным с доступом к оперативной памяти компьютера, таким как переполнения буфера и висячие указатели.
Стати́ческий ана́лиз ко́да (англ. static code analysis) — анализ программного обеспечения, производимый (в отличие от динамического анализа) без реального выполнения исследуемых программ. В большинстве случаев анализ производится над какой-либо версией исходного кода, хотя иногда анализу подвергается какой-нибудь вид объектного кода, например P-код или код на MSIL. Термин обычно применяют к анализу, производимому специальным программным обеспечением (ПО), тогда как ручной анализ называют «program.
Из-за путаницы с терминологией словом «оператор» в программировании нередко обозначают операцию (англ. operator), см. Операция (программирование).Инстру́кция или опера́тор (англ. statement) — наименьшая автономная часть языка программирования; команда или набор команд. Программа обычно представляет собой последовательность инструкций.
Сопрограммы (англ. coroutines) — методика связи программных модулей друг с другом по принципу кооперативной многозадачности: модуль приостанавливается в определённой точке, сохраняя полное состояние (включая стек вызовов и счётчик команд), и передаёт управление другому. Тот, в свою очередь, выполняет задачу и передаёт управление обратно, сохраняя свои стек и счётчик.
Читайте также: