Nasıl assembly dilinde iş yığını mı?
Şu anda yığının nasıl çalıştığını anlamaya çalışıyorum, assembly language, Bu kitap kullanıyorum kendim öğretmeye karar verdim:
http://savannah.nongnu.org/projects/pgubook/
Gas Linux Mint benim geliştirme yapıyorum.
Biraz bir şeyler kafamı karıştırdı:
Yığın sadece bir veri yapısıdır bir farkında olduğum kadarıyla. Eğer mecliste uygulamak gerek kodlama olsaydım, kendimi bir yığın düşündüm. Ancak bu gibi komutlar var gibi görünmüyor
pushl
popl
x86 mimari derleme kodlama ve Gaz sözdizimini kullanarak: zaten uygulanan bu sadece bir veri yapısı yığını mı? Ya aslında donanım düzeyinde uygulanır? Yoksa başka bir şey mi? Ayrıca diğer çoğu yonga setleri için montaj diller zaten uygulanan bir yığın var?
Bu aptalca bir soru oldu biliyorum ama aslında bu kafamı karıştırdı.
CEVAP
Öncelikle program's stack
any old stack
arasında kafan karıştı sanırım.
Bir Yığın
Bilgi oluşan soyut bir veri yapısı Son giren İlk Çıkar sistemi. Koy keyfi nesneler üzerine yığını ve o zaman sen almak onları daha fazla gibi bir ın/out tepsi, üst öğe her zaman bir olduğunu çıkarmış ve hep giy üstüne.
Bir Yığın Program
Bir yığın ise, infaz sırasında kullanılan belleğin bir bölümü, genellikle programın başına statik bir boyutu vardır ve sık sık işlev parametreleri saklamak için kullanılır. Üzerine parametrelerin bir fonksiyonu çağırdığınızda yığını ve işlev adresi ya doğrudan ya da yığın yığın değişkenleri babalık ittir.
Bir program yığını değil genellikle donanım (gerçi tutulmuş hafıza yüzden olabilir iddia gibi), ama Yığın İşaretçisi olan noktaları mevcut alanın Yığını genellikle bir CPU kayıt. Bu bir ÖMRÜNÜ hangi yığın adresleme da değiştirme gibi bir yığın daha biraz daha esnek hale getirir.
Okuma ve Donanımı iyi bir açıklama ne ile ilgili olduğu Yığın verir gibi wikipedia makale anladığınızdan emin olun.
Eski 16 bit kayıtları açısından yığın açıklıyor ama yığın özellikle yararlı ve another one olabilir de this tutorial.
Gelen Pipenbrinck Nils:
O layık bir not bazı işlemciler değil uygulamak tüm talimatları için erişim ve manipüle yığın (push pop stack pointer, vb.) ama 86 çünkü bu frekans kullanın. Eğer bir yığın istersen bu gibi durumlarda bunu uygulamak zorunda kalacak kendini (bazı CABASI ve bazı ARM işlemciler yığınları olmadan oluşturulur).
Cabası, örneğin, push ders gibi uygulanamadı:
addi $sp, $sp, -4 # Decrement stack pointer by 4
sw $t0, ($sp) # Save $t0 to stack
ve Pop bir talimat gibi görünecektir:
lw $t0, ($sp) # Copy from stack to $t0
addi $sp, $sp, 4 # Increment stack pointer by 4
Nasıl Yığını ve JavaScript bir Sıra uy...
Nasıl curl etkinleştirmek için, Ubuntu...
Tüm sonra, doğru geri Parçaları örnek ...
Çağrı yığını tam olarak nasıl çalışır?...
Nasıl bir al " C " iz yığını olabilir?...