You are on page 1of 3

STACK ( YIGIN )

verilerin geçici olarak tutulduğu yerdir. Çoğu veri eğer programda kalıcı değil ise burada tutulur.

Oluşturulan fonksiyondaki değişken “a” en yüksek stack adresine ( en yüksek stack adresi stack ın ilk
adresidir ) eklenir ve yeni bir değişken gelinceye kadar adresi odur.

Sırayla int a , int b ve int c değişkenlerinin oluşturulduğunu düşünelim.

High adress 0xFFFFFF

int a 0xFFFF44 int a first adress of stack memory point

Low Adress 0x000000


Fonksiyon yeni bir değişken atadığı zaman en sondan bir önceki adrese yeni değişken “b” atanır.

High adress 0xFFFFFF

0xFFFF44 int a first adress of stack memory point

int b 0XFFFF40 int b

Low Adress 0x000000

Fonksiyon yeni bir değişken atadığı zaman yukarıdaki işlem her bir değişken için tekrarlanır. Ve
böylelikle bir yığın ( Stack ) oluşur. Ve işlemcideki stack pointer her zaman en son eklenen adresi
gösterir. Yani şuanda int c nin bulunduğu adres olan 0xFFFF36 yı gösterir.

int c

High adress 0xFFFFFF

0xFFFF44 int a first adress of stack memory point

0XFFFF40 int b

int c 0XFFFF36 int c

Low Adress 0x000000

Bir işlemcide Stack pointer (SP) her zaman en son eklenen stack adresini gösterir.
IAR Workbench de stack in hafızası Project >> Options >> Linker tıklayarak daha sonra “ovemide
default “ sekmesi aktif hale getirilip Edit >> Stack/Heap Sizes tıklanarak değiştirilebilinir.

Stack e eklenen değişkenler fonksiyonlar tarafından oluşturulan değişkenlerin bulunduğu


yerdir. Geçici olark saklanırlar ve fonksiyon bittiği zaman artık bellekte (stack kısmında) yer
tutmazlar.

static komutu ise, eğerki fonksiyon tarafından bir değişken oluşturmuş isek ve onun
kaybolmasını istemiyorsak yani kalıcı bellekte yer almasını istediğimiz zamanlarda
kullanabileceğimiz bir keyword dür.

You might also like