Ответ
У файла с машинным кодом (нативным исполняемым файлом) нет единого стандартного расширения — оно зависит от операционной системы и формата файла.
Основные примеры:
- Windows:
.exe(исполняемый),.dll(динамическая библиотека),.sys(драйвер) - Linux/Unix: обычно без расширения, но может быть
.binили.so(shared object) - macOS:
.app(папка-приложение),.dylib(динамическая библиотека)
Ключевое отличие: Машинный код — это бинарные инструкции для конкретного процессора, в отличие от исходного кода (.java, .py, .cpp) или байт-кода (.class в Java).
Ответ 18+ 🔞
А, ну это классика, блядь! Приходит такой новичок, смотрит на файл без расширения в линуксе и думает: "Чё за хуйня? Текстовый, что ли?" А это, сука, и есть та самая готовая программа, которая прямо в процессор ляжет, как родная!
Смотри, тут всё просто, но охуенно запутанно, потому что у каждой операционки свои приколы, блядь.
Вот тебе расклад по полочкам:
- Винда, наша мать: Там всё по-понятному, с ярлычками.
.exe— это святое, исполняемый файл, тыкнул дважды и понеслась..dll— это такие библиотечки, куски кода, которые.exeподгружает, как водку к закуске..sys— это уже серьёзные ребята, драйверы, которые в самое ядро системы лезут. - Линукс/Юникс: А вот тут, сука, цирк! Чаще всего у нативных программ вообще нет расширения. Просто файл с каким-нибудь названием. И он исполняемый, ёпта! А если уж очень хочется пометить, то иногда
.binсыпят..so— это аналог виндовых.dll, shared object, библиотека общая. - Маки (macOS): Ну, эти ребята тоже оригинальничают.
.app— это вообще не файл, а хитрая папка-контейнер, которую система тебе как программу показывает. А.dylib— ихняя версия динамической библиотеки, чтобы код между программами таскать.
А теперь главное, чтобы в голове не еб...лось: Весь этот машинный код — это не текст. Это уже конечный, приготовленный продукт. Ты не откроешь его блокнотом и не прочитаешь (ну, кроме совсем уж извращенцев с дизассемблерами). Это прямые команды для процессора: "возьми то, сложи с этим, положи туда". Совсем другая кухня, чем исходники на Python (.py) или Java-байткод (.class), который ещё виртуальная машина жуёт.
Короче, расширение — это просто этикетка на бутылке. А то, что внутри — уже готовая самогонка для процессора.