Sistem çağrısı arabiriminin "genel" kodlara değil, mimariye / platforma bağlı olarak düşük düzeyde uygulandığını biliyorum.
Yine de, Linux’taki sistem çağrılarının neden 32-bit x86 çekirdeklerinin benzer mimaride aynı tutulmadığı sayılara sahip olduğunu açıkça göremiyorum Linux 64-bit x86_64? Bu kararın arkasındaki motivasyon / sebep nedir?
İlk tahminim, arka plandaki bir nedenin, 32 bit uygulamaları x86_64 sisteminde çalıştırılabilir halde tutmak olduğu, böylece sistem çağrı numarasına yapılan makul bir dengelemeyle sistemin kullanıcı alanının 32 bit veya 64 bit olduğunu bilmesiydi. sırasıyla. Ancak bu durum böyle değil. En azından bana x86_64'te sistem çağrı numarası 0 olan read () 'in bu düşünce ile aynı hizada olamayacağı görülüyor.
Bir başka tahmin de, sistem çağrı numaralarını değiştirmenin kendimi onaylayamadığım bir güvenlik / sertleşme geçmişine sahip olabileceği yönünde.
Mimariye bağlı kod bölümlerini uygulamanın zorluklarına karşı cahil olduğumdan, hala gerekmediğinde sistem çağrı numaralarının nasıl değiştirildiğini merak ediyorum (16-bitlik bir kayıt bile bile büyük ölçüde şu anda ~ çağrılar), uyumsuzluk dışında başka bir şey elde etmede yardımcı olur (sistem çağrılarını bir kütüphane aracılığıyla kullanmak, libc, hafifletir).