Mono79

Just another WordPress.com weblog

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.

January 29, 2006 Posted by | Programming | 4 Comments

   

Follow

Get every new post delivered to your Inbox.