Apa itu Daftar Tumpukan?

Dalam kaitannya dengan komputer, register tumpukan adalah lokasi memori — biasanya pada unit pemrosesan pusat ( CPU ) atau perangkat keras pemrosesan terkait — yang menyimpan alamat saat ini di bagian atas wilayah memori komputer terpisah yang dikenal sebagai tumpukan. Register tumpukan penting karena, tanpanya, komputer perlu menerapkan metode yang lebih lambat, lebih rawan kesalahan untuk melacak aliran eksekusi suatu program. Di sebagian besar arsitektur sistem, register tumpukan adalah register khusus sehingga tidak diakses secara tidak sengaja saat bekerja dengan register memori lain. Lebih jarang, register tumpukan dapat menjadi register umum yang biasanya dapat diakses oleh suatu program tetapi sengaja tidak digunakan karena penggunaannya ditentukan oleh pabrikan. Ketika sebuah sistem komputer berisi dua atau lebih register tumpukan, yang berarti kemungkinan ada lebih dari satu tumpukan, arsitekturnya dikenal sebagai mesin tumpukan.

Register tumpukan adalah lokasi memori, biasanya pada CPU, yang menyimpan alamat tumpukan saat ini.

Pada tingkat terendah pemrograman komputer , tumpukan adalah area memori — biasanya dalam memori akses acak (RAM) — yang memiliki jenis perilaku yang terdefinisi dengan baik. Tumpukan dapat memiliki informasi yang ditambahkan ke dalamnya dalam proses yang disebut mendorong, atau dapat memiliki informasi yang diambil darinya, yang disebut popping. Model stack adalah first-in, last-out, artinya jika beberapa informasi didorong ke dalam stack, maka unsur pertama yang didorong masuk akan menjadi yang terakhir keluar, sedangkan unsur terakhir yang didorong masuk akan jadilah yang pertama diambil dengan perintah pop. Register tumpukan melacak bagian atas tumpukan, yang selalu merupakan item terakhir yang dimasukkan ke dalamnya.

Ketika sebuah program komputer sedang dieksekusi, setiap instruksi yang sedang dieksekusi memiliki alamat memori tertentu yang disimpan sementara selama durasi program. Jika sebuah program memanggil subrutin — atau prosedur, fungsi atau metode, tergantung pada bahasa pemrograman — maka program harus melompat ke alamat memori dari kode subrutin untuk mengeksekusinya. Alamat di mana aliran kontrol program putus ke cabang ke subrutin didorong ke tumpukan sehingga diingat. Ketika subrutin telah selesai dieksekusi, program mengetahui ke mana ia harus kembali dalam kode utama dengan mengeluarkan alamat kode dari atas tumpukan, di mana register tumpukan menunjuk.

Meskipun ada metode lain yang dapat digunakan untuk mencapai hasil yang sama, menggunakan register tumpukan dan tumpukan memungkinkan konsep pemrograman penting yang dikenal sebagai rekursi. Fungsi rekursif adalah fungsi yang, dalam kodenya sendiri, memanggil dirinya sendiri. Proses ini biasanya digunakan dalam algoritma pengurutan dan untuk fungsi matematika tertentu. Register tumpukan melacak semua alamat terakhir tempat eksekusi bercabang, sehingga suatu fungsi dapat dengan aman mengimplementasikan rekursi dengan pengetahuan bahwa, pada akhirnya, kontrol akan kembali ke titik asal. Satu komplikasi terjadi jika seluruh tumpukan menjadi penuh dan tidak ada ruang di memori yang tersisa, dalam hal ini terjadi penumpukan tumpukan , menghentikan eksekusi program.