2016-03-26 21 views
-1

Başlık oldukça fazla diyor. Ben (8gb'nin yukarısında) ram (cpu kullanımı için ciddi bir tradeoff olarak) dağıtmak için gereken bir algoritma (ve şimdi de nasm içine taşıyarak) yazıyorum. Her yinelemede, bir yığını yığına depolar (çıktı ve daha sonra kullanım için). Ardından, periyodik olarak bir değerler kümesini serbest bırakabilir, ancak yalnızca yığının altından olabilir. Bu sadece yığın tabanı (rbp) azaltarak yapılabilir mi?Biri x86_64'teki yığın belleği rbp'den çıkarılarak ayrılabilir mi?

cevap

0

Yığın yığınıdır. Üstündeki değerleri itip pop edebilirsiniz, ancak daha fazlası olamaz. Bundan başka bir şekilde herhangi bir şeyi tahsis edemezsiniz.

RBP'nin değiştirilmesi hiçbir şey yapmaz, yalnızca geçerli yığın çerçevesi için kullanılacak bir yardımcı kayıttır. RSP, yığının mevcut üst kısmını gösterir ve bu, bir sonraki değerin yığının içinden saklanacağı veya alınacağı yerde değişerek hareket eder. Böylece gerektiğinde üst kısımdan bir demet değer bırakabilirsiniz, ancak alttan değil. Değerleri geçici olarak saklamanız ve daha sonra bunları serbest bırakmanız gerekirse, dairesel bellek veya normal bellek blokları bunun için çok daha uygun olacaktır.

+0

Kiitos, sami. Halki, poikki ja pinoon -vastaus. –