SORU
17 ŞUBAT 2009, Salı


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
17 ŞUBAT 2009, Salı


Ö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  

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dylan Dubay

    Dylan Dubay

    10 Temmuz 2013
  • picster

    picster

    20 NİSAN 2006
  • pucksz

    pucksz

    24 Mart 2006