Мне интересно, в каком формате будет создан скомпилированный исходный код программы (например, C или Rust).Файл-формат программы
Я знаю, что выходной файл является двоично-кодированным файлом на машином языке (как объясняется каждый справочник и документация). Я думал, что открытие файла с помощью редактора по моему выбору, такого как VIM, должно показать мне много 1 и 0, не так ли? Но каждый раз, когда я ищу в Интернете эту тему, я только нахожу, как открыть двоичный файл в VI в шестнадцатеричном формате (в основном используя «xxd»).
Нет ли способа увидеть двоичный файл как двоичный файл? -> 100101101111
Каков формат скомпилированной программы?
при открытии бинарного файла с текстовым редактором в вы видите представление '' bytes' не bits' в качестве печатаемых (или не printable-, то вы даже не видите их) символов. –
Поскольку вы упоминаете 'vim' и' xxd', я предполагаю, что вы находитесь в системе POSIX (например, Linux)? Затем прочитайте о [Исполняемый и Связываемый формат] (https://en.wikipedia.org/wiki/Executable_and_Linkable_Format). И мой совет для вас, что вы не должны пытаться разобрать ELF файл самостоятельно, есть библиотеки, которые могут помочь вам, и даже с помощью таких библиотек вы должны думать долго и упорно, прежде чем делать это. А также читайте о [проблеме XY] (http://xyproblem.info), потому что ваш вопрос один: вы говорите нам, что хотите прочитать исполняемый файл, но не говорите нам об исходной проблеме. –
Исполняемый код должен быть * загружен * операционной системой, поэтому код обычно упаковывается в какой-то вид контейнера, который ОС знает, как читать и из которого загрузчик ОС может загружать соответствующие части (данные, код, перемещение, и т.д.). Фактический программный код находится где-то, только не справа наверху. Ближе всего вы можете получить двоичный код чистого кода - это старый [формат MS-DOS '.com'] (https://en.wikipedia.org/wiki/COM_file). –