int $0x80
x86と amd64 のsyscall
システム コールの番号が異なることに気付きました。たとえばsys_exit
、x86 では syscall 1、amd64 では syscall 60 です。システム コールの番号付けスキームが異なる (歴史的な) 理由はありますか?
1367 次
1 に答える
16
syscall インターフェイスは非常に安定していると想定されており、追加のみが許可されています。syscall インターフェイスがアーキテクチャごとに異なるという事実を利用して、Linux の担当者は蓄積された残骸を片付けて、amd64 syscall をゼロから開始することを決定した可能性が最も高いです。
参照:linux/Documentation/ABI/stable/syscalls
このインターフェースは、POSIX インターフェースの多くと一致し、POSIX インターフェースと他の Unix ベースのインターフェースに基づいています。時間の経過とともに追加されるだけで、何かが削除されることはありません。
このインターフェイスは、Linux がサポートするアーキテクチャごとに異なることに注意してください。各システムコールにマップされるシステムコール番号の詳細については、アーキテクチャ固有のドキュメントを参照してください。
于 2012-04-23T13:50:57.900 に答える