Instruksi panggilan digunakan untuk memanggil suatu fungsi. Ini mendorong alamat pengirim (alamat segera setelah instruksi CALL ) pada tumpukan. Ini mengubah EIP ke tujuan panggilan . Ini secara efektif mentransfer kontrol ke target panggilan dan memulai eksekusi di sana.
Dengan mengingat hal ini, bagaimana cara kerja instruksi panggilan?
Instruksi panggilan memanggil prosedur dekat menggunakan pointer penuh. panggilan menyebabkan prosedur yang disebutkan dalam operan untuk dieksekusi. Ketika prosedur yang dipanggil selesai, aliran eksekusi dilanjutkan pada instruksi yang mengikuti instruksi panggilan (lihat instruksi pengembalian ).
Juga Tahu, apa instruksi Call & ret dan jelaskan cara kerjanya? Instruksi CALL dan RET . Dua instruksi mengontrol penggunaan prosedur bahasa assembly: CALL mendorong alamat pengirim ke stack dan mentransfer kontrol ke prosedur. RET mengeluarkan alamat pengirim dari tumpukan dan mengembalikan kontrol ke lokasi itu .
Juga Tahu, bagaimana Anda memanggil fungsi dalam perakitan?
Perhatikan bagaimana deklarasi fungsi dalam perakitan terlihat persis seperti label lompat. Satu-satunya perbedaan nyata adalah Anda dapat kembali dari suatu fungsi dengan memanggil “ret” untuk kembali ke siapa pun yang memanggil AndaMendefinisikan Fungsi dalam Majelis .
Hampir disana |
Mendapatkan kembali |
|
fungsi |
menelepon ke suatu tempat |
membasahi |
melompat |
jmp di suatu tempat |
jmp backToYou |
Apa dua tindakan yang dilakukan oleh instruksi panggilan?
Instruksi ini mengimplementasikan panggilan dan pengembalian subrutin . Instruksi panggilan pertama-tama mendorong lokasi kode saat ini ke tumpukan yang didukung perangkat keras di memori (lihat instruksi push untuk detailnya), dan kemudian melakukan lompatan tanpa syarat ke lokasi kode yang ditunjukkan oleh operan label.