Stack pointer adalah sebuah register khusus dalam arsitektur komputer—seperti pada sistem 16-bit—yang berfungsi untuk menyimpan alamat memori dari elemen data terakhir yang dimasukkan ke dalam sebuah stack (tumpukan). Dalam sistem mikroprosesor, stack pointer bekerja secara otomatis untuk melacak operasi penambahan data (push) dan penghapusan data (pop).
Konsep penunjuk atau pointer sendiri dalam ilmu komputer merujuk pada objek atau tipe data dalam bahasa pemrograman yang nilainya merujuk atau menunjuk ke alamat memori lain. Ketika digabungkan dengan struktur data stack, sistem ini mengikuti prinsip linear LIFO (Last In, First Out), di mana elemen yang terakhir masuk akan menjadi yang pertama keluar.
Komponen Terkait dalam Register 16-bit
Pada arsitektur sistem lebih dari 16-bit, stack pointer ditempatkan bersama berbagai register fungsional lainnya untuk mengatur alur eksekusi instruksi dan pengelolaan memori. Berikut adalah tabel komponen register yang umumnya ditemukan berdampingan dengan stack pointer:
| Jenis Register | Fungsi Utama dalam Sistem |
|---|---|
| Stack Pointer (SP) | Menyimpan alamat memori puncak dari tumpukan data (stack). |
| Instruction Pointer (IP) / Program Counter | Menyimpan alamat memori dari instruksi berikutnya yang akan dieksekusi. |
| Index Registers | Digunakan untuk pengalamatan memori berbasis indeks (seperti SI dan DI). |
| Status Register / Flag Register | Menyimpan status kondisi atau hasil dari operasi aritmatika dan logika terkini. |
Cara Kerja Stack dan Pointer
Operasi dasar pada stack melibatkan dua instruksi utama yang sangat bergantung pada nilai stack pointer:
- Push: Memasukkan data baru ke dalam stack. Nilai stack pointer biasanya akan dikurangi (pada arsitektur yang bertumbuh ke bawah) atau ditambah untuk menunjuk ke alamat data baru.
- Pop: Mengambil data teratas dari stack. Stack pointer kemudian disesuaikan kembali untuk menunjuk ke elemen data sebelumnya.
Keberadaan pointer memastikan bahwa alamat memori ini dapat diakses secara efisien oleh unit pemroses pusat (CPU) tanpa harus memindai seluruh memori yang ada.