Tôi biết rằng giao diện cuộc gọi hệ thống được triển khai ở mức độ thấp và do đó phụ thuộc vào kiến trúc / nền tảng, chứ không phải mã "chung".
Tuy nhiên, tôi không thể thấy rõ lý do tại sao các cuộc gọi hệ thống trong hạt nhân Linux 32 bit x86 có các số không được giữ giống nhau trong kiến trúc tương tự Linux 64 bit x86_64? Động lực / lý do đằng sau quyết định này là gì?
Dự đoán đầu tiên của tôi là một lý do nền tảng là để giữ cho các ứng dụng 32 bit có thể chạy được trên hệ thống x86_64, do đó thông qua phần bù hợp lý cho số cuộc gọi hệ thống, hệ thống sẽ biết rằng không gian người dùng là 32 bit hoặc 64 bit tương ứng. Tuy nhiên, đây không phải là tình huống. Ít nhất đối với tôi, đọc () là số gọi hệ thống 0 trong x86_64 không thể phù hợp với suy nghĩ này.
Một dự đoán khác là việc thay đổi số cuộc gọi hệ thống có thể có nền tảng bảo mật / cứng, điều mà tôi không thể tự xác nhận.
Không biết gì về các thách thức khi triển khai các phần mã phụ thuộc vào kiến trúc, tôi vẫn tự hỏi làm thế nào để thay đổi số cuộc gọi hệ thống , khi dường như không cần (vì ngay cả một thanh ghi 16 bit sẽ lưu trữ nhiều hơn số ~ 346 hiện tại để thể hiện tất cả các cuộc gọi), sẽ giúp đạt được bất cứ điều gì, ngoài khả năng tương thích (mặc dù sử dụng các cuộc gọi hệ thống thông qua thư viện, libc, giảm nhẹ nó).