15

int $0x80x86と amd64 のsyscallシステム コールの番号が異なることに気付きました。たとえばsys_exit、x86 では syscall 1、amd64 では syscall 60 です。システム コールの番号付けスキームが異なる (歴史的な) 理由はありますか?

4

1 に答える 1

16

syscall インターフェイスは非常に安定していると想定されており、追加のみが許可されています。syscall インターフェイスがアーキテクチャごとに異なるという事実を利用して、Linux の担当者は蓄積された残骸を片付けて、amd64 syscall をゼロから開始することを決定した可能性が最も高いです。

参照:linux/Documentation/ABI/stable/syscalls

このインターフェースは、POSIX インターフェースの多くと一致し、POSIX インターフェースと他の Unix ベースのインターフェースに基づいています。時間の経過とともに追加されるだけで、何かが削除されることはありません。

このインターフェイスは、Linux がサポートするアーキテクチャごとに異なることに注意してください。各システムコールにマップされるシステムコール番号の詳細については、アーキテクチャ固有のドキュメントを参照してください。

于 2012-04-23T13:50:57.900 に答える