Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

1 Pertemuan 7 Optimasi Pemrograman C Matakuliah: >/ > Tahun: > Versi: >

Presentasi serupa


Presentasi berjudul: "1 Pertemuan 7 Optimasi Pemrograman C Matakuliah: >/ > Tahun: > Versi: >"— Transcript presentasi:

1 1 Pertemuan 7 Optimasi Pemrograman C Matakuliah: >/ > Tahun: > Versi: >

2 2 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Melakukan optimasi pemrograman C pada target micro-kontroler atau embedded systems

3 3 Outline Materi Prosessor Arsitektur Const Volatile Array & Static Integer & Register

4 4 Prosessor Arsitektur

5 5 Prosessor Arsitektur 8051

6 6 Prosessor Arsitektur 68HC11/12 RAMCPUEEPROM ROM/ EPROM TIMER PARALLEL I/O SPISCI A/D 68HC11/12

7 7 The 68HC12(11) Registers

8 8 Hirarki Bahasa Pemrograman Komputer Bahasa Mesin merupakan kombinasi angka-angka yang dieksekusi langsung oleh komputer. Sehingga bahasa mesin bersifat unik antar satu prosessor dengan prosessor jenis lainnya.

9 9 Sistem Pemrograman

10 10 Istilah-istilah yang digunakan: Bahasa Mesin Bahasa Assembly Assembler: Bahasa Assembly ke bahasa mesin Compiler: Bahasa Tingkat Tinggi ke bahasa mesin atau assembly. (<- hal ini yang akan di-optimalisasi pada bahasa C) Linker/Loader

11 11 Hardware Software Firmware: Software dalam memori (hardware) Catatan: Kegiatan pemrograman adalah kegiatan mempersiapkan daftar instruksi-instruksi yang akan dieksekusi. Program disimpan pada memori program. Data disimpan pada memori data dan dimanipulasi oleh program. Memori Data dan Program dapat disimpan pada lokasi ic-memori yang sama ataupun berbeda, misalnya ROM untuk memori Program dan RAM untuk memori Data.

12 12 Const – Volatile Qualifiers Const dan Volatile tidak saling berhubungan (Const != !Volatile) Const dan Volatile digolongkan sbg Tipe Qualifier, apa maksudnya? –Qualifier: Memenuhi persyaratan atau standard tertentu, contoh: volatile int k; //volatile adalah sebuah qualifier –Specifiers: Menyatakan tipe data suatu variable, contoh: int k; //int adalah sebuah specifiers

13 13 Contoh Const + Volatile volatile i; volatile int j; const long q; const volatile unsigned long int rt_clk; struct { const long int li; signed char sc; }volatile vs;

14 14 Const Const(anta): tidak dapat diubah! Lalu kapan const var dapat diisi? Saat inisialisasi atau jika const var tersebut mengacu pada port hardware yang berada pada alokasi alamat memori yang tetap. Const &Objek -> *pointer const OK Const &Objek -> *pointer non-const NOT_OK

15 15 Const const char *cp; char c; char *const cp = &c; cpc c Const pointerNon Const Variable Non Const pointer Const Variable

16 16 Volatile Volatile digunakan pada pemrograman C untuk real-time atau sistem embedded. Mengapa? Bayangkan suatu alat memiliki 2 buah register dengan panjang 16-bit/register pada alamat yang berurutan. Register pertama adalah register kontrol-status (csr-control status register) dan register kedua adalah register data. Maka cara mengakses kedua register tersebut adl:

17 17 volatile /* Standard C example but without const or volatile */ /* * Declare the device registers * Whether to use int or short * is implementation dependent */ struct devregs{ unsigned short csr; /* control & status */ unsigned short data; /* data port */ }; /* bit patterns in the csr */ #define ERROR 0x1 #define READY 0x2 #define RESET 0x4 /* absolute address of the device */ #define DEVADDR ((struct devregs *)0xffff0004) /* number of such devices in system */ #define NDEVS 4 /* * Busy-wait function to read a byte from device n. check range of device number. Wait until READY or ERROR * if no error, read byte, return it * otherwise reset error, return 0xffff */ unsigned int read_dev(unsigned devno){ struct devregs *dvp = DEVADDR + devno; if(devno >= NDEVS) return(0xffff); while((dvp->csr & (READY | ERROR)) == 0) ; /* NULL - wait till done */ if(dvp->csr & ERROR){ dvp->csr = RESET; return(0xffff); } return((dvp->data) & 0xff); }

18 18 Volatile Volatile digunakan untuk memberi-tahu kompiler bahwa hardware port yang digunakan bersifat volatile: artinya meskipun alamat hardware port tersebut sama, tetapi kompiler C tidak BOLEH melakukan optimasi pada perulangan while() dengan mengkopi hanya satu kali data pada hardware port tersebut. Sehingga perlu ditambahkan kata “volatile” sebagai berikut:

19 19 volatile /* Standard C example but without const or volatile */ /* * Declare the device registers * Whether to use int or short * is implementation dependent */ struct devregs{ unsigned short volatile csr; /* control & status */ unsigned short const volatile data; /* data port */ }; /* bit patterns in the csr */ #define ERROR 0x1 #define READY 0x2 #define RESET 0x4 /* absolute address of the device */ #define DEVADDR ((struct devregs *)0xffff0004) /* number of such devices in system */ #define NDEVS 4 /* * Busy-wait function to read a byte from device n. check range of device number. Wait until READY or ERROR * if no error, read byte, return it * otherwise reset error, return 0xffff */ unsigned int read_dev(unsigned devno){ struct devregs *dvp = DEVADDR + devno; if(devno >= NDEVS) return(0xffff); while((dvp->csr & (READY | ERROR)) == 0) ; /* NULL - wait till done */ if(dvp->csr & ERROR){ dvp->csr = RESET; return(0xffff); } return((dvp->data) & 0xff); }

20 20 Integer & Register register unsigned int var_name; Gunakan unsigned int jika diketahui bahwa nilai variabel integer tersebut tidak akan pernah negatif. Karena prosessor menangani variabel unsigned integers lebih cepat daripada variabel integers. Register berfungsi untuk memastikan bahwa var_name ditempatkan sedekat mungkin dengan prosessor (yaitu: berada pada register).

21 21 Array & Static Switch: switch ( queue ) { case 0 : letter = 'W'; break; case 1 : letter = 'S'; break; case 2 : letter = 'U'; break; } atau IF: if ( queue == 0 ) letter = 'W'; else if ( queue == 1 ) letter = 'S'; else letter = 'U'; atau static char *classes="WSU"; letter = classes[queue];

22 22 Static Static: Lingkup / Scope lokal variabel, tetapi nilai variabel bersifat Tetap (preserved) pada saat program keluar dari lingkup fungsi tersebut.

23 23 Topik Minggu Depan Concurrent Versions System 1 Tugas: Mahasiswa mencoba fungsi debugger pada bahasa C untuk Studi Kasus: Konversi data Analog ke data Digital – buku pustaka no:2 halaman 93) Tugas: Baca buku elektronik berjudul: “Open Source Development with CVS”


Download ppt "1 Pertemuan 7 Optimasi Pemrograman C Matakuliah: >/ > Tahun: > Versi: >"

Presentasi serupa


Iklan oleh Google