|
| |
| |
| |
Set-Intruksi, Teknik Pemrograman & compiler
Muhammad Aviv Burhanudin
13230004@bsi.ac.id
ABSTRACT
|
Didalam resume ini akan membahas set-intruksi, teknik pemrograman
dan com–
piler pada arsitektur RISC AVR 8-bit dan khususnya untuk mikrokontroler
ATtiny85.
|
|
1. Pengantar
| |
Teknologi mikrokontroler telah berkem–
|
bang pesat dalam beberapa dekade terakhir, dan
salah satu contoh yang paling populer adalah
mikrokontroler ATtiny85 yang menggunakan
arsitektur RISC AVR 8−bit. Dalam resume ini,
kita akan membahas secara lebih lanjut tentang
set-intruksi, teknik pemrograman, dan compiler
yang digunakan pada arsitektur RISC AVR
8−bit, khususnya pada mikrokontroler
ATtiny85.
| |
Dengan memahami konsep-konsep ini, kita
|
dapat lebih mudah mengembangkan aplikasi yang
efektif dan efisien pada mikrokontroler
ATtiny85.
| |
Oleh karena itu, resume ini bertujuan untuk
|
memberikan gambaran umum tentang set-
intruksi, teknik pemrograman, dan compiler pada
arsitektur RISC AVR 8−bit dan mikrokontroler
ATtiny85, sehingga dapat membantu para
pengembang dan programmer dalam mengem–
bangkan aplikasi yang lebih baik.
2. Instruction Set
| |
Secara singkat Instruction Set atau Set-
|
Instruksi adalah kumpulan instruksi yang dapat
dijalankan oleh prosesor, terdapat juga sebuah
Instruction Set Architecture (ISA) yaitu arsitek–
tur RISC AVR 8−bit yang mendefinisikan
bagaimana instruksi-instruksi tersebut dijalankan.
Pada Instruction Set terdapat dua jenis dalam
desain instruksi set, yaitu RISC (Reduced
Instruction Set Computers) dan CISC (Complex
Instruction Set Computers).
| |
| |
| |
2.1. RISC
RISC didasarkan pada premis bahwa kin–
erja yang lebih tinggi dapat dicapai jika setiap
instruksi memenuhi satu kata dalam memori, dan
semua operand yang diperlukan untuk men–
jalankan operasi aritmatika atau logika yang
ditentukan oleh instruksi sudah ada di register
prosesor. Pendekatan ini memungkinkan imple–
mentasi unit pengolahan yang dapat melakukan
operasi yang berbeda dalam mode "pipelined"
untuk mengurangi waktu eksekusi total program.
Batasan bahwa setiap instruksi harus memenuhi
satu kata mengurangi kompleksitas dan jumlah
jenis instruksi yang dapat dimasukkan dalam
instruksi set komputer.
2.2. CISC
CISC menggunakan instruksi yang lebih
kompleks yang dapat memenuhi lebih dari satu
kata dalam memori dan dapat menentukan operasi
yang lebih rumit. Pendekatan ini lebih umum
digunakan sebelum munculnya pendekatan RISC
pada tahun 1970-an. Meskipun penggunaan
instruksi kompleks tidak secara khusus diidenti–
fikasi dengan label tertentu, komputer yang berba–
sis pada ide ini kemudian disebut Complex
Instruction Set Computers.
2.3. Instruction Set pada ATtiny85
Pada ATtiny85 terdapat 5 pengelom–
pokan Set-instruksi yaitu
1 Arithmetic and Logic Instruction
Instruksi instruksi yang terdapat pada
kelompok ini merupakan instruksi
untuk menghitung dan logika,
– 2 –
|
beberapa contoh instruksi adalah:
ADD, SUB, AND, OR, NEG, INC,
DEC.
|
2 Branch Instruction
| |
Pada Instruksi Percabangan kita
dapat menggunakan percabangan
kondisi seperti IF dan ELSE pada
Bahasa tinggat atas seperti C, berikut
beberapa instruksi percabangan:
RJMP, IJMF, RCALL, ICALL,
RET, CP, BREQ, BRNE.
|
3 Bit and Bit-test Instruction
| |
Instruksi-instruksi ini digunakan
untuk menseting bit, contohnya men–
set apakah sebuah PORT merupakan
input atau output, berikut beberapa
instruksi: SBI, CBI, LSL, LSR,
SWAP, SEC, CLC, SEI.
|
4 Data Transfer Instruction
| |
Pada bagian ini terdapat instruksi-
instruksi yang digunakan untuk
memindahkan atau menyalin sebuah
value ke tempat yang baru, berikut
beberapa instruksi: MOV, MOVW,
LDI, LD, IN, OUT, PUSH, POP.
|
5 MCU Control Instruction
| |
Di bagian ini terdapat instruksi yang
digunakan untuk mengontrol
mikrokontroler, berikut instruksinya:
NOP, SLEEP, WDR, BREAK.
|
|
3. Teknik Pemrograman
| |
Dalam pemrograman mikrokontroler teknik
|
pemrograman hanyalah 2 yaitu Imperatif dan
OOP (Pemrograman berbasis objek), dalam pem–
rograman mikrokontroler bahasa yang dipakai
adalah C, C++ dan Assemby.
| |
Pada bahasa Assembly kode yang ditulis
|
untuk suatu mikrokontroler tidaklah kompaatibel
dengan mikrokontroler lain, dan pada bahasa
Assembly dibatasi oleh seberapa banyak instruksi
yang dapat dilakukan.
| |
Pada bahasa C & C++, hal ini juga berlaku
|
seperti Assembly namun memporting kode ke
mikrokontroler lain lebih mudah dibanding
Assembly.
3.1. Program blink pada Bahasa C
| |
Sebuah program "Hello world" tetapi untuk
|
mikrokontroler adalah program blink, dimana kita
memperogram mikrokontroler untuk melyalakan
dan mematikan LED yang terhubung pada PB0.
| |
| |
| |
#include <avr/io.h>
#include <util/delay.h>
#define BLINK_DELAY_MS 1000
int main (void)
{
DDRB |= _BV(DDB0);
while(1) {
PORTB |= _BV(PORTB0);
_delay_ms(BLINK_DELAY_MS);
PORTB &= ~_BV(PORTB0);
_delay_ms(BLINK_DELAY_MS);
}
}
|
|
|
| |
| |
| |
3.2. Disassembled Blink
Hasil kompilasi program dapat di konversi
kembali ke bahasa Assembly dengan menggu–
nakan avr−objdump, melalui debugger
avr−gdb, dan bisa melalui godbolt, berikut
ini adalah Bahasa assembly yang berasal dari pro–
gram blink sebelumnya, dengan perintah kompi–
lasi
avr−gcc −Os −mmcu=attiny85
__SP_H__ = 0x3e
__SP_L__ = 0x3d
__SREG__ = 0x3f
__tmp_reg__ = 0
__zero_reg__ = 1
main:
sbi 0x17,0
sbi 0x18,0
ldi r18,lo8(199999)
ldi r24,hi8(199999)
ldi r25,hlo8(199999)
1: subi r18,1
sbci r24,0
sbci r25,0
brne 1b
rjmp .
nop
cbi 0x18,0
ldi r18,lo8(199999)
ldi r24,hi8(199999)
ldi r25,hlo8(199999)
1: subi r18,1
sbci r24,0
sbci r25,0
brne 1b
rjmp .
nop
rjmp .L2
– 3 –
|
|
|
4. Compiler
| |
Compiler bertugas menkonversi kode sum–
|
ber suatu bahasa ke bahasa lain, dalam mikrokon–
troler compiler yang sering digunakan dan juga
memiliki komunitas yang baik adalah avr−gcc,
setelah menkompilasi contoh program blink
sebelumnya maka akan ada file baru yang memi–
liki ekstensi .elf, .elf tidak dapat langsung
digunakan, sebelum dapat di download atau di
upload ke dalam mikrokontroler format diubah
terlebih dahulu ke dalam format intel hex dengan
ekstensi .hex.
| |
Untuk mempermudah pemrograman dapat
|
menggunakan avr−libc, sebuah standar
library seperti libc pada komputer namun
dikhususkan untuk mikrokontroler, avr−libc
ini terdapat deklarasi seperti PORTB, DDRB dan
fungsi-fungsi yang berguna untuk menunjang
pemrograman untuk mikrokontroler.
| |
Development tools yang biasa digunakan
|
untuk mikrokontroler adalah Makefile, compiler,
downloader dan uploader, downloader & uploader
menggunakan program avr−dude.
| |
Agar dapat mendownload kode ke dalam
|
mikrokontroler, diperlukan mikrokontroler lain
yang bertugas mengirimkan kode ke mikrokontr–
ler tujuan.
4.1. Perintah untuk membuat elf file
| |
MCU = attiny85
F_CPU = 8000000UL
CFLAGS = −Os −mmcu=$(MCU)
avr−gcc −DF_CPU=$(F_CPU)
| |
| |
$(CFLAGS)
−c −o main.o main.c
|
|
avr−gcc −mmcu=$(MCU) main.o
|
References
[1] Bryce Wiedenbeck CS 31: Chapter 2
뇯
| |
Instruction Set Architecture
|
| |
Swarthmore
College Computer Science Department
|
|
|