Olarak montaj MIPS , yığın işaretçisi için bir kayıt ve çerçeve işaretçisi başka bir kayıt yoktur. Çerçeve işaretçisi nedir ve amacı nedir? Yığın göstericisinden farkı nedir?
Olarak montaj MIPS , yığın işaretçisi için bir kayıt ve çerçeve işaretçisi başka bir kayıt yoktur. Çerçeve işaretçisi nedir ve amacı nedir? Yığın göstericisinden farkı nedir?
Yanıtlar:
MIPS montajında, yığın işaretçisi yığının üstüne işaret eder. Yığına boşluk ayırdığınızda, yığın işaretçisi ($ sp) boş belleğe işaret eder.
MIPS grubundaki bir alt yordamı çağırırken (o günlerde kayıtlar birinci sınıftaydı - alışılmadık yerlerde temel parametreleri kaydedin), biri parametrelere yığına yazılır ve daha sonra yığın işaretçisini ilerletir.
Yöntem başladığında, bir parametre ofsetinde olabilir 16($sp)
. Bununla birlikte, değişkenler yığına yerleştirildiğinde, yığın işaretçisi hareket eder ve aynı parametre şimdi 24($sp)
bunun yerine bulunabilir. Bu, kodu biraz kafa karıştırıcı hale getirebilir.
Kare işaretçisi ($ fp) yığın çerçevesinin başlangıcına işaret eder ve alt yordam çağrısı süresince hareket etmez. Bu, istif çerçevesinin tabanına işaret eder ve alt rutine iletilen parametreler, çerçeve işaretçisine göre sabit bir noktada kalır.
Çerçeve işaretçisinin, onu değiştiren alt rutin çağrılarla birlikte depolanması ve geri yüklenmesi gerektiğini fark edin.
Daha fazla okuma:
%ebp
x86 çağrı-konvansiyonunda 'temel işaretçi' kaydının geleneksel kullanımı ile aynı şey midir? (Bunların hepsinde yeniyim, ancak sth MOV 8(%ebp), %eax
veya benzeri bir şey kullanmakla aynı temel şeye benziyor mu?)
Realize that the frame pointer will need to be stored and restored with subroutine calls that modify it.
ne anlama geldiği tam olarak belli değil