86-64 aramalar UNIX için arama kuralları nelerdir
Açıklar 86-32 UNIX (BSD lezzet) & Linux sistem çağrısı kuralları her ikisi de:
Ne sistem hem UNİX & Linux üzerinde x 86-64 kurallarına diyorsun?
CEVAP
Linux üzerinde bu kullanarak GNU Çevirici (gaz) doğrulandı.
Çekirdek Arayüz
86-32 Linux Sistem Çağrısı Kongre:
Linux sistem çaÄŸrısı için 86-32 parametre olarak geçirilir kullanarak kaydeder. Syscall_number �x, �êx
x, �x, %, �ben, �p esı sistem çağrıları için 6 parametreleri iletmek için kullanılır.
Linux Assembly Tutorial dan parçacığını aşağıdaki çektim ama bu konuda şüpheliyim. Eğer herhangi bir örnek gösterebilir, çok iyi olurdu.
Eğer altı ya da daha fazla bağımsız değişken varsa,
ëx
bellek içermelidir konumu argümanlar listesi saklanır ama bu konuda merak etme kullanmanız pek olası değil çünkü altı yıldan fazla bir sistem çağrısı argümanlar.
Bir örnek ve biraz daha okuma http://www.int80h.org/bsdasm/#alternate-calling-convention bölümünde bulabilirsiniz
86-32 [Özgür|Açık|Net|FreeBSD]UNİX Sistem Çağrısı Kongre BSD:
Parametreleri yığına geçirilir. Parametreleri (son parametre ilk itti) yığın itme. Sonra kukla veri (aslında kukla verileri. 32-bit bir ek itme daha fazla bilgi için aşağıdaki bağlantıya bakınız) ve daha sonra sistem çağrısı bir talimat int $0x80
ver
http://www.int80h.org/bsdasm/#default-calling-convention
86-64 & *BSD Sistem Çağrısı sözleşmesi Linux:
Bölümüne bakın: "2 AMD64 A. Linux Çekirdeği Kuralları" System V Application Binary Interface AMD64 Architecture Processor Supplement
İşte bu bölümde parçacığı:
- Kullanıcı düzeyinde uygulamaları geçirilmesi için tamsayı kayıtları olarak kullanın , %sırası %rdı rsı, %rdx, %rcx, %r8 ve %r9.Çekirdek arayüzü, %r10, %r8 ve %r9 rdx %rdı, %, %rsı kullanır.
- Bir sistem çağrısı ile yapılırsistem çağrısı talimat. Çekirdek kayıtları %rcx ve %r11 yok eder.
- Sistem çağrısını sayısı rax %siciline geçirilmiş değil.
- Sistem çağrıları altı bağımsız değişkenleri ile sınırlıdır, hiçbir tartışma geçti. doğrudan yığın.
- Sistem çağrısını dönen, kayıt %rax sonucunu içerir sistem çağrısı. Bir değer -4095 ve -1 arasındaki aralığı gösterir bir hata,
-errno
.- Sınıf TAMSAYI veya sınıf HAFIZA değerleri çekirdek geçirilir.
Kullanıcı Arabirimi
86-32 Çağırma Fonksiyonu
86-32 parametre yığını geçirildi. Son parametre yığını tüm parametreleri yapılır kadar ilk itildi ve call
öğretim idam edildi. Bu Linux üzerinde (C kütüphanesi) C kütüphane fonksiyonları derleme çağırmak için kullanılır.
86-64 Çağırma Fonksiyonu
Çünkü çok genel amacımız var sebebi kaydeder ve işlev çağırma mekanizması değişti yüksek genişliği diğer kayıtları sanırım. Buyenimekanizması. İlk parametre sınıfa ayrılır. Her parametrenin sınıf hangi çağrılan işlev geçirilir şeklini belirler.
Tam bilgi için bakınız : "3.2 İşlev Sırası hangi bölümü okur" System V Application Binary Interface AMD64 Architecture Processor Supplement,: çağırıyorum
Bağımsız sınıflandırılır sonra, kayıtları atandığını ( geçen soldan sağa sipariş) şöyle:
- Eğer sınıfı BELLEK, tartışmadan yığın geçirir.
- Eğer sınıf bir TAMSAYI değilse, bir sonraki kullanılabilir kayıt sıra %rdı, %rsı, %, %rdx rcx, r8 ve %r9 kullanılır
%rdi, %rsi, %rdx, %rcx, %r8 and %r9
kaydedersıraylaKurul, herhangi bir kütüphanenin işlev parametreleri geçirmek için kullanılır. %rdı ilk parametre için kullanılır. 2, %rdx 3 ve %rsı. Sonra call
talimat verilmelidir.
Eğer parametreleri 6 Daha sonra 7. Eğer parametre itibaren yığında geçirilir.
Birden fazla ajax aramalar için Javasc...
MongoDB için adlandırma kuralları nele...
Clojure isim kullanmak için ortak kura...
Nasıl dava Vim / küçük harf duyarlı ar...
Nasıl (arama) gıt tarihinde kaydedilmi...