почему таблица системных вызовов Linux 64 бит отличается
Я только что посмотрел в сети на номера системных вызовов Linux, и я нашел разные номера, будь то 32-разрядная или 64-разрядная версия Linux.
Почему Linux изменил порядок системных вызовов ?? Разве это не затруднит достижение совместимости между 32-битными и 64-битными программами Linux?
Больше информации:
Вот сайты, на которых я нашел номера системных вызовов: 32- разрядная версия Linux, 64-разрядная версия Linux .
Я также нашел номера системных вызовов в системе Linux, в этих двух файлах:
/usr/include/asm/unistd_32.h
и/usr/include/asm/unistd_64.h
.
Редактировать : я написал 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-битная программа (хотя таблица системных вызовов различна для двух архитектур).
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4