Что на самом деле содержит исполняемый файл?

Что на самом деле содержит исполняемый файл?.. Это содержит инструкции к процессору в форме Opcode и Operands? Раз так, почему у нас есть различные исполняемые файлы для различных операционных систем?

21
задан Sphinx 12 January 2010 в 10:03
поделиться

5 ответов

Да, код в виде OPCODES и OPERANDS, а также данных, конечно. Все, что вы хотите сделать, это связано с операционной системой, зависит от операционной системы, а не на CPU. Вот почему вам нужны разные программы для разных операционных систем. Открытие окна в Windows не выполняется с той же последовательностью инструкции, как в Linux, и так далее.

10
ответ дан 29 November 2019 в 21:12
поделиться

Как заявил Понкин - у вас, вероятно, есть одна единственная проблема, которая заставляет R не генерировать себя заново, из-за чего у вас теперь один миллион и одна проблема.

Не пытайтесь создать класс R самостоятельно. Попробуйте подумать о последнем XML, с которым вы возились, и проверьте его на наличие ошибок

У меня была та же проблема здесь

-121--2249334-

Прошло много времени с тех пор, как был задан этот вопрос:) В любом случае, я думаю, что вам следует использовать API подсистемы устройства ввода Linux.

http://www.linuxjournal.com/article/6429 вот хорошее введение.

-121--2859019-

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

Однако программы в основном выполняются с помощью операционных систем (вы можете писать программы, которые не используют ОС для выполнения, но это было бы много ненужной работы) - которые обеспечивают абстракции поверх аппаратного обеспечения, которое программы могут использовать. ОС отвечает за настройку «контекста» для любой выполняемой программы, т.е. обеспечивает необходимую ей память, предоставляет библиотеки общего назначения, которые программа может использовать для выполнения общих задач, таких как запись в файлы, печать на консоль и т.д.

Однако для настройки контекста программы (предоставить ему память, загрузить его данные, настроить для него стек), ОС должна считывать исполняемый файл программы и должна знать несколько вещей о программе, таких как данные, которые программа ожидает использовать, размер этих данных, исходные значения, сохраненные в этой области данных, список opcode, которые составляют программу (также называется текстовой областью процесса), их размер и т. д. Все эти данные и многое другое (отладочная информация, данные только для чтения, такие как жестко закодированные последовательности в программе, таблицы символов и т.д.) хранятся в исполняемом файле. Каждая ОС понимает различный формат этого исполняемого файла, так как они ожидают, что вся эта информация будет храниться в исполняемом файле разными способами. Проверьте ссылки, предоставленные Groo.

Для хранения информации в исполняемом файле используется несколько форматов ELF и COFF в UNIX-системах и PE в Windows.

P.S. - Не все программы нуждаются в исполняемых форматах. Найдите загрузчики в Google. Это специальные программы, которые занимают первый сектор загрузочного раздела на жёстком диске и используются для загрузки самой ОС.

10
ответ дан 29 November 2019 в 21:12
поделиться

Как раскручивание , подразумеваемое в его ответе, исполняемый файл содержит вызовы на процедуры в операционной системе.

Было бы чрезвычайно неэффективно для исполняемого файла, чтобы попытаться реализовать функции, уже предоставленные ОС (например, запись на диск, принимая ввод), настолько тяжелое использование выполнено на основе вызовов на функции ОС.

Разные операционные системы обеспечивают функции, которые делают подобные вещи, но детали , как , чтобы вызвать эти функции (и где они) могут быть разными.

Итак, помимо основных отличий типа процессора, исполняемые файлы, написанные для одной ОС, не будут работать с другим.

8
ответ дан 29 November 2019 в 21:12
поделиться

Чтобы сделать любую форму IO, исполняемый файл необходимо взаимодействовать с операционной системой с использованием Sys-Calles. В Windows это вызовы на API Win32 и на Linux / Unit. Это в основном вызовы POSIX.

Кроме того, исполняемый файл файлов отличается от os, так же, как файл PNG отличается от файла GIF. Данные заказываются по-разному, и есть разные заголовки и подподраторы.

4
ответ дан 29 November 2019 в 21:12
поделиться
1
ответ дан 29 November 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: