Memanggil Konvensyen dalam C/C
Dalam C/C , konvensyen panggilan yang berbeza digunakan untuk menentukan cara hujah dihantar kepada fungsi dan cara keputusan dikembalikan. Konvensyen ini menentukan susunan dan kaedah penempatan hujah pada tindanan atau dalam daftar, serta tanggungjawab untuk pembersihan tindanan.
Konvensyen Panggilan yang Tersedia
C/C menawarkan berbilang konvensyen panggilan, termasuk:
-
cdecl: Argumen ditolak pada tindanan dari kanan ke kiri, dengan daftar khusus ditetapkan untuk data yang disimpan pemanggil dan disimpan oleh penerima.
-
syscall: Serupa dengan cdecl tetapi tidak mengekalkan daftar tertentu dan memerlukan lulus saiz senarai parameter secara eksplisit.
-
pascal: Parameter ditolak pada tindanan dari kiri ke kanan, dan penerima bertanggungjawab untuk mengimbangi tindanan.
-
stdcall : Variasi pascal di mana pemanggil mengendalikan pembersihan tindanan, dengan hujah ditolak dari kanan ke kiri seperti dalam cdecl.
-
fastcall: Dua argumen pertama dihantar dalam daftar tertentu dan baki argumen ditolak pada tindanan.
-
vectorcall: Direka bentuk untuk menghantar argumen vektor yang cekap menggunakan SIMD mendaftar.
-
safecall: Digunakan dalam konteks COM (Model Objek Komponen) untuk mengendalikan pengecualian secara telus.
-
Konvensyen Panggilan Microsoft X64: Konvensyen piawai digunakan pada Windows dan pra-but UEFI untuk seni bina x86-64, menggunakan daftar khusus untuk hujah dan nilai titik terapung dan menggunakan "ruang bayang" untuk pengendalian tindanan.
Penerangan Terperinci
Untuk gambaran keseluruhan menyeluruh tentang konvensyen panggilan ini, rujuk perkara berikut sumber:
- Wikipedia: [C memanggil konvensyen](https://en.wikipedia.org/wiki/X86_calling_conventions)
- MSDN: [Memanggil Konvensyen untuk Penyusun C](https://docs.microsoft.com/en-us/cpp/build /x64-calling-convention)
- Intel: [Volume Manual Pembangun Perisian Intel® 64 dan IA-32 Architectures 1: Seni Bina Asas](https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325383.pdf)
Atas ialah kandungan terperinci Bagaimanakah konvensyen panggilan yang berbeza memberi kesan kepada hantaran fungsi hujah dan pembersihan tindanan dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!