Pertemuan 7 Optimasi Pemrograman C

Slides:



Advertisements
Presentasi serupa
Fungsi Konsep Pemrograman.
Advertisements

Pemrograman Terstruktur
Keyword, Variabel, Konstanta, Tipe Data, Operator, dan Input / Output
Struktur Dasar Bahasa C
DASAR-DASAR PEMROGRAMAN C
STRUKTUR DATA (5) Pointer dan Function
Pemrograman Berorientasi Objek Bab 1 – Pemrograman Terstruktur.
Pointer.
STRUKTUR DATA (5) Pointer dan Function
Alokasi Memori Yuliana Setiowati.
Kuliah 12 Type Checking.
Pointer Yuliana Setiowati.
BASIC DATA TYPES, VARIABLES & OPERATORS
IL, SFC, ST.
STRUKTUR DATA Pointer dan Function
Pengantar Bahasa Rakitan
1 Pertemuan 4 ELEMEN DASAR C++ Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
Pertemuan 3 ELEMENTARY TCP SOCKETS
1 Pertemuan 3 Pemanfaatan berbagai fungsi grafik yang telah ada baik melalui ROM-BIOS atau Compiler C/C++ Matakuliah: T0074 / Grafika Komputer Tahun: 2005.
Matakuliah : T0016 / Algoritma dan Pemrograman Tahun : 2007 Versi : 6
03 Elemen Dasar Bahasa Java
1 Pertemuan 4 Menggambar titik Matakuliah: T0074 / Grafika Komputer Tahun: 2005 Versi: Versi 1 / Revisi 0.
1 Pertemuan 6 Unit Testing Matakuliah: H0112 – Pemrograman Bahasa Tingkat Tinggi Tahun: 2005/2006 Versi: >
1 Pertemuan Pengantar Bahasa C Matakuliah: T0616 / Algoritma dan Pemrograman Tahun: 2007 Versi: 1/0.
1 Pertemuan 1 Pengenalan Pemrograman Terstruktur C Matakuliah: H0112 – Pemrograman Bahasa Tingkat Tinggi Tahun: 2005/2006 Versi: xxx/2.
Struktur Sistem Komputer
VARIABEL DAN JENISNYA A. Ridwan Siregar.
Pemrograman Terstruktur
Teknik. Pemrog. Terstruktur 2
INTRODUCTION TO C++ Prepared by: Edi, SKom, MKM.
Matakuliah : H0112 – Pemrograman Bahasa Tingkat Tinggi
PBO Daniel Riano Kaparang, S.Kom., M.Cs
Algoritma dan Struktur Data 1 pertemuan 4
PERTEMUAN 3 KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Pertemuan 2 SINTAKS BAHASA, TIPE DATA, DAN OPERATOR
3. Elemen Dasar C++ S. Indriani L., M.T 3. Elemen Dasar C++
Pengenalan C++ Oleh : Dewi Sartika.
Pertemuan 5 Tipe Data, Operator, Tata Bahasa
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
INSTRUKSI PENGAMBIL KEPUTUSAN DAN STACK
Matakuliah : H0162/ Mikroprosesor Tahun : 2006 Versi : 1/0
Pertemuan 3 Variabel/Dinamik Pointer
Tipe Data, Variabel, & Konstanta
Pertemuan 4 Modularitas
PEMROGRAMAN PASCAL ELEMEN PEMROGRAMAN PASCAL.
Elemen-elemen Dasar Pada Bahasa C++
Tipe Data Dasar Variabel dan Konstanta
DASAR-DASAR PEMOGRAMAN
Melda Dahoklory,S.Kom,MT
TEL 2112 Dasar Komputer & Pemrograman
Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator
TEL 2112 Dasar Komputer & Pemrograman
Dasar Bahasa Java.
Pengantar Bahasa Rakitan
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Variabel dan Tipe Data TEE 2103 Algoritma & Pemrograman
Pengantar Bahasa Rakitan
INSTRUKSI PENGAMBIL KEPUTUSAN DAN STACK
Pemrograman Terstruktur
Keywords ,Tipe Data, dan contoh Penggunaanya
MENGGUNAKAN SISTEM OPERASI KOMPUTER BAB V
Memori & Pemrograman MCS-51
SISTEM OPERASI Desi Ramayanti, S.Kom 11/16/2018
Teknik. Pemrog. Terstruktur 2
Matakuliah : Algoritma & Struktur Data Versi Materi Larik
Pengantar Bahasa Rakitan
Bab 03 Variabel dan Tipe Data
Defri Kurniawan POINTER Defri Kurniawan
INSTRUKSI PENGAMBIL KEPUTUSAN DAN STACK
Operator, Variabel, Konstanta, Tipe Data
Transcript presentasi:

Pertemuan 7 Optimasi Pemrograman C Matakuliah : <<Kode>>/<<Nama mtkul>> Tahun : <<Tahun Pembuatan>> Versi : <<versi/revisi>> Pertemuan 7 Optimasi Pemrograman C

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

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

Prosessor Arsitektur

Prosessor Arsitektur 8051

Prosessor Arsitektur 68HC11/12 ROM/ RAM CPU EEPROM EPROM 68HC11/12 TIMER A/D PARALLEL SPI SCI I/O

The 68HC12(11) Registers

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.

Sistem Pemrograman

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

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.

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

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;

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

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

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:

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); }

Sehingga perlu ditambahkan kata “volatile” sebagai berikut: 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:

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); }

register unsigned int var_name; 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).

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'; static char *classes="WSU"; letter = classes[queue];

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

Concurrent Versions System 1 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”