Cara kerja instruksi
Termasuk bagian Dasar-Dasar dalam perjalanan Assembly di Coddy. Pelajaran 4 dari 45.
Kamu tahu bahwa CPU menjalankan instruksi satu per satu. Namun, bagaimana CPU tahu instruksi mana yang harus dijalankan berikutnya? Di mana instruksi disimpan? Dan seperti apa bentuk instruksi sebenarnya?
Instruksi adalah angka.
Ini adalah kebenaran mendasar tentang komputer. Semuanya adalah angka. Data yang kamu gunakan (seperti angka 42) adalah angka. Alamat tempat data berada (seperti 1000) adalah angka. Instruksinya sendiri (seperti mov, add, cmp) juga berupa angka.
Saat kamu menulis kode assembly seperti mov rax, 5, assembler mengubah teks yang dapat dibaca manusia ini menjadi angka yang dipahami CPU. Angka ini disebut kode instruksi.
Di mana instruksi disimpan?
Instruksi disimpan di memori, sama seperti data. Tidak ada tempat khusus untuk instruksi. Memori menyimpan keduanya:
- Data (angka, karakter, array)
- Instruksi (program itu sendiri)
CPU tidak mengetahui perbedaannya. CPU hanya membaca apa pun yang ada di alamat memori yang ditunjuk oleh Program Counter. Kamu telah mempelajari PC secara singkat di Pelajaran 0.1. Sekarang saatnya memahami dengan tepat cara kerjanya.
Program Counter (juga disebut Instruction Pointer) adalah register khusus di dalam CPU. Satu-satunya tugasnya adalah menyimpan alamat memori instruksi berikutnya yang akan dijalankan.
Siklus Fetch-Execute:
CPU mengulangi tiga langkah ini tanpa henti:
| Langkah | Yang terjadi |
|---|---|
| 1. FETCH | Membaca instruksi pada alamat di PC |
| 2. EXECUTE | Menjalankan instruksi tersebut |
| 3. ADVANCE | Memindahkan PC ke instruksi berikutnya |
Contoh sederhana:
Jika PC = 1000, CPU:
- Mengambil instruksi pada alamat 1000
- Menjalankannya
- Memindahkan PC ke alamat berikutnya (1000 + ukuran instruksi)
Kemudian proses ini berulang dengan nilai PC yang baru.
Seperti apa bentuk sebuah instruksi:
Setiap instruksi memiliki dua bagian:
| Bagian | Fungsinya | Contoh |
|---|---|---|
| Opcode | Yang harus dilakukan | mov, add, cmp |
| Operand | Yang menjadi sasaran | rax, 5, [result] |
Beberapa instruksi memiliki satu operand (seperti inc rax untuk menambahkan 1). Beberapa memiliki dua operand (seperti mov rax, 5). Beberapa memiliki tiga operand (seperti add rax, rbx, rcx pada beberapa arsitektur).
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