Assembly içinden C Fonksiyonu Çağırma [Linux]

03:23 , , , ,


Linux'te assembly içinden C fonksiyonu çağrılacak ise yapılması gereken temel işlemler aşağıdaki örnekte anlatıldığı gibidir:

  • Çağrılacak fonksiyon .text alanında extern bildirimi yapılması gerekmektedir. 
  • Fonksiyon çağrılmadan önce ise parametreler soldan sağa stack'e push edilmesi gerekmektedir.



sample.asm isimli dosya içine yukarıdaki gibi kod yazıldıktan sonra :
  • nasm -f elf32 sample.asm ile object dosya oluşturulur
  • gcc -m32 -o sample sample.o ardından gcc ile çalıştırılabilir dosya oluşturulur.



  • gcc -m32 veya -m64 flaglerini kullandığımızda hata veriyorsa gcc için kurulum yapılması gerekmektedir.




  • apt-get install gcc-multilib kurulumu ile 32 - 64 bit derleme işlemlerini gerçekleştirebiliriz.




sample isimli çalıştırılabilir dosyamız oluşturulmuş oldu. İleride gcc'yi de devre dışı bırakacağız ve doğrudan linker ile elf dosyamızı oluşturacağız.