TGViewer
Мир Linux Мир Linux @linuxos_tg · 56.6K subscribers
Post #590 22K
Вот базовая концепция Linux

Почему нельзя запустить бинарник Linux в Windows, даже на одном и том же x86-процессоре?

Можно было бы свалить всё на разный формат файлов (ELF против .exe), но настоящая причина - ABI (Application Binary Interface).

ABI — это жёсткий "контракт", определяющий, как программа разговаривает с ядром. Бинарник компилируется не просто под конкретный CPU (x86), а под конкретный ABI (например, «Linux-on-x86»).

Чтобы вывести «Hello», программа не может просто напрямую писать на экран. Она должна попросить ядро сделать это.

Ниже приведён полный, самодостаточный пример того, как можно общаться с ядром. Он не использует вообще никаких библиотек, написан на ассемблере, так что можно увидеть всю цепочку взаимодействия между программой и операционной системой. Этот код рассчитан на классический x86 Linux ABI, и он до сих пор работает.

Секрет в инструкции int $0x80.

Эта инструкция генерирует программное прерывание. Это такой "звонок", которым программа говорит CPU: «Стоп! Приостанови выполнение и передай управление ОС».

Ядро Linux просыпается, видит прерывание 0x80 и понимает, что пользовательское приложение запрашивает системный вызов. Оно смотрит в регистр %eax, видит число 4 и говорит: «Ага, это write». После чего послушно использует аргументы из %ebx, %ecx и %edx, чтобы выполнить работу.

У ядра Windows совершенно другие правила. Его системный вызов "write" – это не #4, и оно вообще, скорее всего, не реагирует на int $0x80.

Ваш Linux-бинарник говорит на языке Linux-контракта. Для ядра Windows это просто шум. Оно не понимает запрос и не будет его выполнять

@linuxos_tg
  • ❤ 133
  • 👍 96
  • 🔥 35
  • 🤔 4
  • 😁 3
  • 👀 3
  • 💯 2
More from @linuxos_tg
  1. Sep 29, 2026Прошлая неделя стала второй за всю историю по количеству отправленных в ядро Linux изменен…
  2. Sep 29, 2026@linuxos_tg
  3. Sep 29, 2026Сложный, но критически важный процесс: усиление защищенности инфраструктуры. Для него нужн…
  4. Sep 29, 2026Кто-то попытался протащить в OpenBSD клоны GNU CoreUtils, переписанные на Rust Тео де Раад…
  5. Sep 27, 2026Проекту GNU сегодня исполняется 43 года 1983 год: Ричард Столлман объявил планы разработат…
  6. Sep 25, 2026Ubuntu переходит на еженедельный выпуск обновлений ядра Linux, потому что ИИ находит уязви…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →