Подтвердить что ты не робот

Почему системные номера вызовов различаются в amd64 linux?

Я заметил, что системные вызовы x86 int $0x80 и amd64 syscall имеют разные номера. Например, sys_exit - это syscall 1 в x86 и syscall 60 в amd64. Существует ли (историческая) причина для различных схем нумерации системных вызовов?

4b9b3361

Ответ 1

Интерфейс syscall должен быть очень стабильным, и допускаются только добавления. Говоря о преимуществах того факта, что интерфейс syscall отличается для каждой архитектуры, ребята из Linux, скорее всего, решили очистить накопленный рывок и начать сэкономить на работе с amd64.

Ссылка: linux/Documentation/ABI/stable/syscalls

Этот интерфейс соответствует большей части интерфейса POSIX и основан на нем и другие интерфейсы на основе Unix. Он будет добавляться только через какое-то время, и не удалять вещи из него.

Обратите внимание, что этот интерфейс отличается для каждой архитектуры, которая Linux поддерживает. См. Документацию, относящуюся к архитектуре для получения подробной информации о номерах системного вызова, которые должны отображаться для каждого Системный вызов.