Вопрос

Я знаю, что исполняемые файлы содержат инструкции, но что именно представляют собой эти инструкции?Если я захочу позвонить в MessageBox Функция API например, как выглядит инструкция?

Спасибо.

Это было полезно?

Решение

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

Вызов функции MessageBox(), был бы последовательностью инструкций, которые будут

1) иметь адрес функции, которая находится в DLL.Этот адрес вводится компилятором

2) инструкции по "помещению" параметров в стек

3) Фактический вызов функции

4) своего рода очистка (зависит от соглашения о вызовах).

Важно помнить, что EXE-файлы - это просто специально отформатированные файлы.У меня нет дизассемблирования для вас, но вы можете попробовать скомпилировать свой код, затем открыть свой EXE-файл в visual Studio, чтобы посмотреть дизассемблирование.

Другие советы

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

mov ax, 2h

Имеет представление в виде байтового кода:

B8 02 00

Байтовые коды загружаются в оперативную память и выполняются процессором, поскольку это его "язык".Никто в здравом уме не поверит, что я разбираюсь в программах в байт-коде, это было бы просто чересчур сложно.Сборка и так ... достаточно увлекательна.Всякий раз, когда вы компилируете программу на языке более высокого уровня, ей приходится брать ваш код и превращать его в инструкции по сборке, вы только представьте, насколько искаженным будет выглядеть ваш код после его компиляции.Не поймите меня неправильно, компиляторы - это здорово, но разберите программу на C ++ с помощью бесплатной программы IDA Pro, и вы увидите, о чем я говорю.Это исполняемые файлы в двух словах, безусловно, есть книги, написанные на эту тему.Я не эксперт по Windows API, но кто-нибудь другой может показать вам, как будет выглядеть инструкция для вызова Windows API "MessageBox".Это должно быть всего несколько линий сборки.

Какой бы код ни был написан (будь то на C или каком-либо другом языке), компилятор компилирует его в особый вид языка, называемый ассемблером (ну, машинный код, но они очень близки).Ассемблер - это язык очень низкого уровня, который процессор выполняет изначально.Обычно вы не программируете на ассемблере, потому что он очень низкоуровневый (например, вы не хотите иметь дело с перемещением битов взад и вперед из памяти).

Я не могу сказать о MessageBox конкретно функционировать, но я бы предположил, что это МНОГО из инструкций.Подумай об этом:он должен нарисовать рамку и оформить ее так, как ее стилизует ваш компьютер, и подключить обработчик even, чтобы что-то происходило, когда пользователь нажимает кнопку, сообщает Windows (или любой другой операционной системе) добавить ее на панель задач (или док-станцию и т.д.), и многое другое.

Это зависит от языка, на котором вы работаете.Но для многих это так же просто, как...

msgbox("Your message goes here")

или

alert("Your message goes here")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top