почему таблица системных вызовов Linux 64 бит отличается

631
Sidahmed

Я только что посмотрел в сети на номера системных вызовов Linux, и я нашел разные номера, будь то 32-разрядная или 64-разрядная версия Linux.

Почему Linux изменил порядок системных вызовов ?? Разве это не затруднит достижение совместимости между 32-битными и 64-битными программами Linux?

Больше информации:

Редактировать : я написал 32-битную сборку Hello World программы:

программа сборки

Я скомпилировал его с помощью команды nasm -f elf32 prog.asm && ld -m elf_i386 prog.o, он компилируется и выполняется нормально. Затем я скомпилировал ту же программу с командой, nasm -f elf64 prog.asm && ld -m elf_x86_64 prog.oожидающей ее сбоя, но она сделала то же самое, что и первая программа, она написала «Hello World!» на вывод по умолчанию.

Как это возможно, что 64-битная программа использовала те же системные вызовы, что и 32-битная программа (хотя таблица системных вызовов различна для двух архитектур).

1
Может быть, вы можете найти некоторые подсказки на [этой вики-странице] (https://en.wikipedia.org/wiki/System_call#Typical_implementations). Утверждается, что _ «Реализация системных вызовов требует передачи управления из пространства пользователя в код ядра, который включает в себя какую-то особенность архитектуры», поэтому они отличаются, за исключением одного: _`__NR_syslog 103`_. Hastur 8 лет назад 0

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

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