Assembler vs C
Beberapa dekade yang lalu untuk menulis program berbasis mikrokontroler hampir tidak ada alternatif lain selain assembler. Tetapi saat ini tersedia lebih banyak bahas pemrograman untuk mikrokontroler selain bahasa asembler. Yang umum digunakan adalah bahasa “C”. Kelebihan bahasa C (dan bahasa tingkat menengah dan tinggi yang lain) dibandingkan assembler antara lain :
- Fleksibel
Program yang ditulis dalam C lebih mudah diporting ke platform lain. - Mudah
Menulis kode program dalam bahasa C jauh lebih mudah karena detil-detil operasi seperti pengaturan stak, alokasi alamat memory dll, sudah ditangani oleh kompiler C. Programer lebih punya banyak waktu untuk menganalisa permasalahan dan mencari algoritma penyelesaian. Pengaturan operasi-operasi dasar oleh kompiler juga menghindarkan kesalahan alokasi register, alokasi memori, dll yang mungkin terjadi jika dilakukan secara manual seperti pada bahasa assembler. - Mudah dibaca
Kode yang ditulis dalam C lebih mudah dibaca alurnya. Kesalahan program (bug) lebih mudah dilacak. - Waktu pengembangan lebih singkat
Dampak dari 2 kemudahan diatas waktu untuk pengembangan program lebih singkat.
Tetapi tidak semua programer mau menggunakan bahasa C (dan memang tidak semua program dapat ditulis dalam bahasa C). Di luar keengganan beralih bahasa, alasan teknis yang sering dikemukakan adalah masalah efisiensi.
Memang kelemahan C adalah efisiensi yang lebih buruk daripada assembler. Operator C sendiri mirip dengan operasi assembler (tetapi dengan sintak yang lebih mudah dibaca, karenanya C dikategorikan sebagai bahasa tingkat menengah) sehingga efisiensi C tidak terlalu buruk jika dibandingkan dengan assembler. Seiring perkembangan waktu, kualitas kompiler untuk mikrokontroler juga semakin baik. Terlebih lagi banyak arsitektur mikrokontroler modern yang sengaja dirancang untuk mendukung bahasa tingkat tinggi, sehingga efisiensi kode yang dihasilkan semakin mendekati assembler, walaupun secara keseluruhan belum mampu menyamai efisiensi kode assembler. Sebagai contoh, kompiler ICC-AVR untuk mikrokontroler AVR, instruksi :
PORTA |= 0×01;
setelah dikompile menghasilkan assembler
SBI PORTA,0
Kebanyakan kompiler C juga mendukung penggunaan assembler untuk subrutin program yang membutuhkan efisiensi.
Tidak seperti program PC yang mampu menjalankan beberapa proses sekaligus (multitasking), kebanyakan program mikrokontroler hanya menjalankan satu fungsi dalam satu waktu, sehingga kelebihan resource yang ada tidak dimanfaatkan untuk proses yang lain. Dengan kata lain sebuah program assembler yang penghabiskan 60% waktu proses tidak memberikan perbedaan yang berarti dengan program C yang menghabiskan 80% waktu proses. Jadi, kecuali untuk program yang menguras habis resource mikrokontroler (memory program, memory data, atau waktu komputasi), bahasa C adalah pilihan yang baik. Dengan menggunakan C waktu pengembangan program dapat dipersingkat. Dan seringkali dalam pengerjaan sebuah project faktor kualitas, kompleksitas dan waktu pengembangan lebih ditekankan daripada efisiensi. Bahasa C adalah kompromi antara kemudahan dan kecepatan.
-
Archives
- February 2008 (2)
- September 2006 (1)
- February 2006 (2)
- January 2006 (1)
-
Categories
-
RSS
Entries RSS
Comments RSS