Fonksiyona stack yoluyla parametre aktarımı

05:07
Fonksiyonlara parametre aktarımı yapılırken yaygın olarak kullanılan yöntem yazmaçları kullanmak değil stack'i kullanmaktır. Yazmaç sayısı kısıtlı olması nedeniyle stack'i kullanmak biraz da zorunlu bir hal haline gelmektedir. Yazmaç kullanmak hızlı ama kısıtlı olmasından dolayı stack kaçınılmaz bir yöntemdir.


AddProc fonksiyonu işini yaparken parametrelerin stack'te olduğunu bildiği için o değerleri sırasıyla erişerek işlemini gerçekleştirmiş ve ret komutu ile geri dönülmüştür. Compile işlemi nasm ile link işlemi gcc ile gerçekleştirilmiş ve kod çalıştırıldığında sorunsuz bir şekilde çalıştığı görülecektir. Tabii ki bu şekilde kod yazma ne portable ne de başkası tarafından kullanılabilir bir kod örneğidir. ABI kavramıda zaten bu tür durumlar için ortak bir standart oluşturmak için belirlenmiştir. Stack kullanılırken stack'i iş bittikten sonra kimin düzenleyeceği ayrıca karar verilmesi gereken bir sorundur. Bu örneğimizde stack 'i çağıran taraf add esp,8 diyerek düzenlemiştir. Kendi alıştırmalarınızda stack veya bir önceki yazımızda anlattığımız gibi yazmaç yoluyla parametre aktarımı gerçekleştirebilirsiniz.