Setiap CPU dirancang dari bawah ke atas untuk mendukung set instruksi tertentu. Sebuah set instruksi adalah satu set operasi hard-code yang dapat dilakukan CPU. Operasi ini dapat berupa, misalnya, menjumlahkan dua angka, melompat ke bagian program yang berbeda, atau membandingkan dua nilai. Setiap operasi yang dapat dilakukan komputer secara unik diwakili oleh sebuah opcode.
Opcode
Saat menjalankan program, CPU menggunakan penghitung program untuk melacak instruksi mana yang perlu dilakukan selanjutnya. Ketika sebuah instruksi diambil, penghitung program bertambah dengan panjang instruksi sehingga menunjuk ke awal instruksi berikutnya. Setiap instruksi terdiri dari sebuah opcode. Tergantung pada instruksi, mungkin atau mungkin tidak termasuk operan. Operan dapat berupa nilai konstan atau penunjuk ke lokasi nilai dalam register CPU atau dalam RAM sistem.
Setelah instruksi lengkap telah diambil, itu perlu diterjemahkan. Ini adalah proses di mana CPU memisahkan opcode dan operan apa pun. Opcode yang didekode digunakan untuk mengaktifkan atau menonaktifkan jalur listrik tertentu di CPU yang akan menghasilkan operasi yang benar.
Setelah instruksi telah diterjemahkan, itu akan dieksekusi. Perilaku yang tepat dari CPU akan tergantung pada operasi. Operasi penjumlahan akan menjumlahkan dua nilai bersama-sama. Operasi lompat akan menghitung ke mana dalam program untuk melompat. Operasi bandingkan akan membandingkan dua nilai. Operasi NOP akan diam, karena NOP adalah singkatan dari No Operation.
Sebagian besar instruksi kemudian akan menampilkan hasil operasi. Output ini dapat masuk ke register prosesor dan, jika perlu, ke RAM sistem. Masing-masing operasi ini membutuhkan satu siklus clock untuk diselesaikan.
Opcode Ilegal
Setiap arsitektur CPU memiliki daftar opcode khusus yang diterbitkan oleh pabrikan. Nilai dari opcode ini tidak harus lintas platform yang sama, itulah sebabnya perangkat lunak perlu dikompilasi untuk arsitektur yang berbeda. Dalam beberapa kasus, pabrikan juga menyertakan opcode yang tidak berdokumen. Ini disebut sebagai "opcode ilegal." Opcode ilegal, meskipun tidak berdokumen, akan melakukan fungsi yang sama setiap kali dipanggil. Namun, sebagai fitur tidak berdokumen dan non-standar, pembaruan arsitektur CPU dapat dengan mudah menghapusnya.
Beberapa game komputer awal di Apple II mengandalkan opcode ilegal tertentu. Mereka kemudian mengalami masalah kinerja dan stabilitas pada revisi CPU Apple IIc kemudian karena IIc menghapus opcode ilegal yang dibutuhkan game. Opcode ilegal juga digunakan dalam lingkaran perlindungan hak cipta sebagai metode keamanan melalui ketidakjelasan dalam perjuangan mereka melawan bajak laut yang meretas konten mereka. Beberapa opcode ilegal hanya dimaksudkan sebagai alat debugging dan penangan kesalahan.
Set instruksi x86 berisi sejumlah besar opcode ilegal yang tidak terdokumentasi. Menariknya, beberapa di antaranya dibagikan antara CPU Intel dan AMD, menunjukkan bahwa kedua perusahaan secara publik mengetahui tujuan mereka sementara tidak didokumentasikan.
Kompiler dan Perakitan
Sebagian besar program ditulis dalam bahasa tingkat tinggi. Ini relatif mudah dibaca, sering menggunakan kata-kata bahasa Inggris atau singkatan untuk meminimalkan kurva belajar. Agar komputer dapat menjalankan program ini, program tersebut perlu dikompilasi. Kompiler pada dasarnya adalah penerjemah. Dibutuhkan kode tingkat tinggi dan mengubahnya menjadi kode komputer, instruksi yang dapat dipahami oleh CPU.
Mungkin juga, dalam beberapa bahasa, untuk menjalankan kode yang tidak dikompilasi melalui program yang dikompilasi sebelumnya yang menghasilkan kode mesin dengan cepat. Majelis adalah bahasa pemrograman tingkat rendah yang menggunakan singkatan untuk memungkinkan pengembang visibilitas langsung dan kontrol atas operasi yang dilakukan. NOP adalah contoh singkatan perakitan.
Kesimpulan
Set instruksi adalah daftar fungsi resmi yang dapat dijalankan oleh arsitektur CPU. Ini adalah daftar operasi yang dapat dilakukan. Operasi-operasi ini di-hard-code ke dalam CPU dan dipanggil menggunakan opcode masing-masing.
Perangkat lunak umumnya menggunakan kompiler untuk menerjemahkan dari kode tingkat tinggi yang dapat dibaca manusia ke kode mesin yang dapat dibaca oleh CPU. Terkadang, arsitektur CPU dapat memiliki opcode yang tidak terdokumentasi, yang disebut opcode ilegal. Opcode ilegal secara teknis merupakan bagian dari set instruksi. Namun, mereka mungkin tidak tersedia secara andal di iterasi platform mendatang. Jangan lupa untuk meninggalkan pemikiran Anda di komentar di bawah.