Anda di halaman 1dari 3

OBSERVASI STACK POINTER

1. Pengertian Stack Pointer


Adalah suatu register yang digunakan untuk operasi stack seperti menyimpan alamat return
saat memanggil subroutine. SP merupakan register yang secara implisit digunakan oleh
perintah PUSH dan POP yaitu menyimpan dan mengambil kembali dari stack.
2. Ilustrasi Stack
Ketika program mulai dijalankan, bagian bersebelahan tertentu memori disisihkan untuk
program yang disebut stack.

Gambar 1. Ilustrasi Stack

Stack pointer biasanya register yang berisi atas tumpukan. Stack pointer berisi alamat
terkecil x sehingga alamat lebih kecil dari x dianggap sampah, dan setiap alamat yang lebih
besar dari atau sama dengan x dianggap valid.
Dalam contoh di atas, stack pointer mengandung nilai 0x0010 0000.
Wilayah yang diarsir dari diagram merupakan bagian yang valid dari stack.
Beberapa hal yang perlu diperhatikan untuk mempelajari stack
Stack Bottom: Alamat valid terbesar dari stack. Ketika stack diinisialisasi, poin stack
pointer akan menuju ke stack bottom
Stack Limit: Alamat valid terkecil dari stack. Jika stack pointer semakin kecil dari ini,
maka ada stack overflow.
3. Operation of Stack
3.1.Selama proses pushing, stack beroperasi pada decrement then store mode.
The stack pointer is decremented first, then the information is placed on the stack.
3.2.Selama proses poping stack beroperasi pada use then increment style.
The information is retrieved from the top of the the stack and then the pointer is
incremented.
3.3.SP pointer selalu menunjuk ke top of the stack
4. Push and Pop
Seperti struktur data dengan nama yang sama, ada dua operasi pada stack: push dan pop.
Biasanya, push dan pop didefinisikan sebagai berikut:

4.1.Push: Anda dapat mem push satu atau lebih register, dengan menetapkan stack pointer ke
nilai yang lebih kecil (biasanya dengan mengurangi 4 kali jumlah register yang akan di
push pada stack) dan menyalin register ke stack.
Berikut adalah diagram dari push stack:

Gambar 2. Ilustrasi saat push

Blok pertama adalah memperlihatkan stack sebelum push operation


Blok kedua adalah memperlihatkan stack pointer mengalami 4 decrement
Blok ketiga adalah memperlihatkan stack setelah 4 byte dari register 3 telah disalin ke
alamat 0x000f fffc .

PUSH instruction
PUSH B (1 Byte Instruction)
Decrement SP
Copy the contents of register B to the memory
location pointed to by SP
Decrement SP
Copy the contents of register C to the memory
location pointed to by SP

Gambar 2. Ilustrasi saat instruction

4.2.Pop: Anda dapat mem pop satu atau lebih register, dengan menyalin data dari stack
untuk register, kemudian untuk menambah nilai ke stack pointer (biasanya
menambahkan 4 kali jumlah register yang akan muncul di stack).
Berikut adalag diagram untuk Pop operation:

Gambar 3. Ilustrasi saat pop

Blok paling kiri menunjukkan initial state dari stack


Blok selanjutnya menunjukkan saat data telah disalin
Blok selanjutnya menunjukkan saat telah terjadu afrer adjusting SP

POP instruction
POP D (1 Byte Instruction)
Copy the contents of the memory location pointed
to by the SP to register E
Increment SP
Copy the contents of the memory location pointed
to by the SP to register D
Increment SP

Gambar 4. Ilustrasi pop instruction

Anda mungkin juga menyukai