Register vs Memori
Termasuk bagian Dasar-Dasar dalam perjalanan Assembly di Coddy. Pelajaran 3 dari 45.
Kamu kini telah mempelajari dua tempat penyimpanan data di dalam komputer:
- Register: kotak penyimpanan kecil di dalam CPU
- Memori (RAM): kisi-kisi besar berisi slot bernomor di luar CPU
Tetapi mengapa ada dua tempat? Mengapa CPU tidak menyimpan semuanya di memori?
Jawabannya adalah kecepatan. Register sangat cepat karena berada di dalam CPU. Memori lebih lambat karena berada di luar. CPU dapat mengakses register dalam satu siklus, tetapi mengakses memori membutuhkan waktu jauh lebih lama.
Perbandingan berdampingan:
| Fitur | Register | Memori (RAM) |
|---|---|---|
| Lokasi | Di dalam CPU | Di luar CPU |
| Kecepatan | Sangat cepat (1 siklus) | Lebih lambat (banyak siklus) |
| Jumlah slot penyimpanan | Sangat sedikit (16-32 pada x86-64) | Jutaan atau miliaran |
| Ukuran setiap slot | 8 byte (64 bit) | 1 byte |
| Cara mengaksesnya | Dengan nama (rax, rbx, rcx...) | Dengan alamat (1000, msg, buffer) |
| Volatil? | Ya (hilang saat daya dimatikan) | Ya (hilang saat daya dimatikan) |
Aturan terpenting dalam assembly:
Sebuah instruksi dapat menggunakan paling banyak satu operand memori. Untuk menggabungkan dua nilai yang keduanya berada di memori, muat salah satunya ke dalam register terlebih dahulu.
Register juga menjadi tempat untuk menyimpan nilai yang kamu gunakan, karena setiap akses ke memori berlangsung lambat.
Pola tiga langkah yang akan sering kamu gunakan:
| Langkah | Yang terjadi | Contoh |
|---|---|---|
| 1. LOAD | Salin data dari memori ke dalam register | mov rax, [count] |
| 2. WORK | Lakukan sesuatu dengan register | add rax, 5 |
| 3. STORE | Salin hasilnya kembali ke memori (jika diperlukan) | mov [result], rax |
Apa yang terjadi jika kamu lupa aturan ini?
Jika kamu mencoba menjumlahkan dua angka yang keduanya berada di memori, assembler akan memberikan error. CPU tidak dapat melakukannya. Kamu harus memuat salah satunya ke dalam register terlebih dahulu.
Coba sendiri
Pelajaran ini tidak memiliki tantangan kode.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
Latihan sendiri: Playground Assembly