Dasar-Dasar Pemrograman Mikroprosesor
Dasar-Dasar Pemrograman Mikroprosesor
Instruction set dari mikroprosesor unik untuk setiap chip. Misalnya, Intel 80386 menggunakan encoding biner yang berbeda dari Motorola 68020, yang berarti operasi yang sama memerlukan kode mesin yang berbeda.
Karena tidak ada standar universal untuk instruction set, pemrograman tingkat rendah menuntut pengetahuan spesifik chip yang mendalam.
Saat seorang developer menulis kode yang secara langsung mengontrol CPU—seperti menyesuaikan injeksi bahan bakar mesin—ia memrogram dalam machine language asli prosesor, serangkaian bit biner yang dikodekan oleh control unit CPU.
Meskipun machine language secara teknis adalah biner, programmer hampir selalu menulisnya dalam heksadesimal untuk keterbacaan. Di bawah ini adalah beberapa instruksi umum untuk Intel 8080:
Hexadecimal Binary Instruction description ----------- -------- ----------------------------------------- 7B 01111011 Move contents of register A to register E 87 10000111 Add contents of register A to register D 1C 00011100 Increment the contents of register E by 1 D3 11010011 Output byte of data to data bus
Bahkan dengan notasi heksadesimal, kode-kode ini bisa membingungkan. Assembly language menawarkan singkatan mnemonic—misalnya, 7B menjadi MOV A,E—yang masih diterjemahkan ke biner oleh assembler sebelum dieksekusi.
Setelah menulis program, harus dimuat ke memori. Untuk penyimpanan nonvolatil, ROM programmer menulis gambar biner ke chip ROM; untuk memori volatil, bootloader atau rutinitas sistem operasi dapat menerima klik atau berkas disk dan menempatkan kode ke RAM.
Pada PC yang fitur lengkap, compiler menulis kode yang diassemble ke berkas disk. Saat runtime, memanggil nama berkas menyebabkan program counter CPU menunjuk ke instruksi pertama dan program berjalan.
Meskipun pemrograman machine atau assembly menghasilkan kode yang sangat efisien, ini membosankan dan rentan kesalahan. Bahasa tingkat tinggi (misalnya, C, C++, Java) memungkinkan developer untuk menyatakan niat—seperti print "Hello, world!"—tidak perlu merinci langkah mesin individu.
Program tingkat tinggi diubah menjadi kode mesin oleh compilers (terjemahan statis) atau interpreters (terjemahan runtime). Kode yang dikompilasi berjalan lebih cepat karena tidak ada terjemahan yang terjadi selama eksekusi, sedangkan kode yang diinterpretasikan menimbulkan overhead untuk setiap instruksi.
Bahasa yang dikompilasi umum termasuk C, C++, FORTRAN, dan Pascal, sedangkan BASIC dan FORTH biasanya diinterpretasikan. Karena instruction set berbeda di antara CPU, compiler dan interpreter harus menargetkan arsitektur prosesor tertentu.
Produsen seperti Intel dan Motorola mengurangi masalah kompatibilitas dengan merancang CPU baru untuk menjadi backward-compatible. Misalnya, processor Pentium IV mendukung instruksi 80386 lengkap ditambah instruksi tambahan. Kode yang dikompilasi untuk 80386 akan berjalan pada Pentium, tetapi kode yang menggunakan instruksi khusus Pentium tidak akan berjalan pada 80386.
Compiler biasanya memungkinkan developer memilih target CPU; kompilasi untuk 80386 menjamin kompatibilitas dengan hardware lama, sedangkan kompilasi untuk Pentium dapat mengeksploitasi fitur baru saat tersedia.
Related Worksheet
- Lembar Kerja Pemrograman Mikroprosesor