Saya tahu bahwa system call interface diimplementasikan pada level rendah dan karenanya bergantung pada arsitektur / platform, bukan kode "generik".
Namun, saya tidak dapat dengan jelas melihat alasan mengapa pemanggilan sistem di Linux kernel x86 32-bit memiliki angka yang tidak tetap sama dalam arsitektur serupa Linux 64-bit x86_64? Apa motivasi / alasan di balik keputusan ini?
Dugaan pertama saya adalah alasan latar belakang untuk menjaga agar aplikasi 32-bit tetap dapat dijalankan pada sistem x86_64, sehingga melalui offset yang masuk akal ke nomor panggilan sistem, sistem akan tahu bahwa ruang pengguna adalah 32-bit atau 64-bit masing-masing. Tetapi, ini bukan perkaranya. Setidaknya bagi saya yang membaca () menjadi nomor sistem panggilan 0 di x86_64 tidak dapat disejajarkan dengan pemikiran ini.
Dugaan lain adalah bahwa mengubah nomor sistem panggilan mungkin memiliki latar belakang keamanan / pengerasan, sesuatu yang saya tidak dapat mengkonfirmasi sendiri.
Menjadi tidak tahu dengan tantangan implementasi bagian kode yang bergantung pada arsitektur, saya masih bertanya-tanya bagaimana mengubah nomor sistem panggilan , ketika tampaknya tidak perlu (karena bahkan register 16-bit akan menyimpan sebagian besar lebih dari angka saat ini ~ 346 untuk mewakili semua panggilan), akan membantu untuk mencapai apa pun, selain memecah kompatibilitas (meskipun menggunakan panggilan sistem melalui perpustakaan, libc, meredakannya).