Вывод Hexdump (в частности, xxd) для файлов exec

644
user4493605

Когда я запускаю Hexdump, используя команду xxd -b "textile.txt"в OS X, терминал печатает как двоичный файл, так и фактический эквивалент ASCII в крайнем правом столбце, показывая содержимое текстовых файлов на английском языке.

Если я создаю простую программу на C, которая мало что делает, то выводит на терминал «привет мир» и сохраняю ее в виде .execфайла, xxd -bвывод команды содержит двоичный файл, который при переводе нигде не найден в исходных файлах .exec. предварительно скомпилировать исходный код.

Пример:

0002034: 00000101 00000000 00000010 01011111 01101101 01101000 ..._mh 000203a: 01011111 01100101 01111000 01100101 01100011 01110101 _execu 0002040: 01110100 01100101 01011111 01101000 01100101 01100001 te_hea 0002046: 01100100 01100101 01110010 00000000 00100001 01101101 der.!m 000204c: 01100001 01101001 01101110 00000000 00100101 00000010 ain.%. 

Я предполагаю, что за это отвечает процесс компиляции, что приводит меня к предположению, что этот вывод в самом правом столбце на самом деле может быть ассемблерным кодом.

Мой вопрос в резюме: Какова природа вывода шестнадцатеричного дампа для файлов .exec, а именно: это код сборки, а если нет, то что это?

Заранее спасибо.

0

1 ответ на вопрос

0
Gombai Sándor

Not really assembly; but I know it's pretty common to mix assembly and machine code. Assembly is still a language readable by (some) humans and it must be compiled to be edible by machines. What you see here is the machine code.

https://en.wikipedia.org/wiki/Machine_code

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