Penggunaan
register jauh lebih cepat dari pada penggunaan memori untuk melakukan sebuah akses, sehingga untuk variabel yang paling intensitas penggunaannya paling sering pada program bahasa c dapat diletakkan pada
register menggunakan
keyword register.
Keyword register memberi petunjuk pada kompilator dengan memberikan variabel yang dapat diletakkan dalam sebuah
register. Kompilator akan memilih apakah variabel akan diletakkan ke dalam
register atau tidak. Umumnya, kompilatorlah yang melakukan optimisasi dan meletakkan variabel dalam sebuah
register.
 |
Ilustrasi Keyword Register Bahasa C |
satu, Jika operator dan
user menggunakan variabel
register maka kompilator akan memberikan pesan
error atau peringatan bahaya, bergantung kompilator apa yang digunakan pada saat eksekusi program, karena ketika sebuah variabel dinyatakan dalam bentuk
register, maka variabel tersebut mungkin akan disimpan dalam sebuah
register ketimbang memori dan akses ke alamat
register tidak dapat dilakukan atau akan menyebabkan
invalid.
Contoh: Coba program berikut ini.
// Pemahaman keyword register
// pada bahasa C
#include<stdio.h>
int main()
{
register int i = 10;
int* a = &i;
printf("%d", *a);
getchar();
return 0;
}
dua, Keyword register dapat digunakan dengan variabel pointer. Sederhananya, sebuah register dapat memiliki alamat dari sebuah lokasi memori. Pada program berikut, jika dilakukan suatu kompilasi maka tidak akan ada masalah apapun pada program tersebut.
Contoh:
// Pemahaman keyword
// register pada bahasa C
#include<stdio.h>
int main()
{
int i = 10;
register int* a = &i;
printf("%d", *a);
getchar();
return 0;
}
tiga, Register adalah sebuah kelas penyimpanan, dan bahasa C tidak memberikan akses untuk lebih dari satu kelas penyimpanan specifier untuk sebuah variabel. Karena hal tersebut, maka register tidak dapat digunakan dengan tipe static. Untuk lebih memahami, lakukan kompilasi program pada contoh berikut ini.
Contoh:
// Pemahaman keyword
// register pada bahasa C
#include<stdio.h>
int main()
{
int i = 10;
register static int* a = &i;
printf("%d", *a);
getchar();
return 0;
}
empat, Register hanya digunakan dengan sebuah block lokal, dan tidak bisa digunakan pada scope global atau diluar dari fungsi main.
Contoh:
// Pemahaman keyword
// register pada bahasa C
#include <stdio.h>
// error (global scope)
register int x = 10;
int main()
{
// dapat berfungsi
// dalam sebuah block
register int i = 10;
printf("%d\n", i);
printf("%d", x);
return 0;
}
Kompilasi error:
prog.c:3:14: error: register name not specified for 'x'
register int x = 10;//error (global scope)
^
lima, Tidak ada batasan pada jumlah dari variabel register pada program bahasa C, namun kompilator mungkin meletakkan beberapa variabel dalam register dan begitupun juga dapat sebaliknya.
Referensi Tambahan:
Artikel ini didedikasikan kepada: Sanistya Ardi Lestari, Satoto Murti Tomo, Shabela Dwi Luvietasari, Uswatun Chasanah, dan Vidia Rachmanita Fauziah.
Apa yang dimaksud dengan keyword register pada bahasa C?
BalasHapusKeyword register akan memberikan petunjuk kepada kompilator program bahwa variabel tertentu dapat dimasukkan ke dalam register.
HapusRegister adalah suatu kelas penyimpanan pada bahasa C.
Bahasa C tidak memberikan ijin atau akses apapun untuk specifier kelas penyimpanan lebih dari satu. Sehingga penggunaan keyword static pada variabel tipe register tidak dapat digunakan.
Apakah register pada bahasa C memang termasuk dalam kata kunci spesial atau keyword?
BalasHapusDalam bahasa C, register dianggap sebagai keyword, type modifier, storage class, dan hint.
HapusApa yang dimaksud dengan kelas penyimpanan register atau register storage class pada bahasa C?
BalasHapusKelas penyimpanan register digunakan untuk mendefinisikan variabel lokal yang harus disimpan dalam memori register, bukan RAM. Hal ini berarti bahwa variabel memiliki ukuran maksimum yang sama dengan ukuran dari memori register itu sendiri dan tidak dapat menerapkan operator unary '&' didalamnya.
Hapusdalam kasus apa keyword register bisa di gunakan?
BalasHapusJaman dulu, pada masa perkembangan program berbasis script, keyword register pada bahasa C digunakan sebagai petunjuk bagi kompilator untuk meletakkan variabel tersebut pada CPU register, ketimbang pada bagian memori.
HapusCatatan: dimana petunjuk yang dibuat pada program, biasanya lebih dari satu.
Namun, pada jaman sekarang kompilator modern sudah jauh lebih baik dalam membuat keputusan daripada dilakukan secara manual oleh programmer, bahkan dengan kode program yang sudah bersifat protabel, user sendiri bahkan sudah tidak tahu apa yang menjalankan kode program yang telah dibuatnya tersebut.
Sehingga, untuk para pengembang atau programmer yang sudah menggunakan kompilator modern tidak perlu terlalu memerhatikan penggunaan keyword register tersebut atau bahkan mengabaikan sama sekali. Karena keyword register tersebut kebanyak dipakai pada pengembangan kode program yang masih menggunakan kompilator tipe lama.
Sedangkan pada C++, keyword register adalah keyword yang masuk kategori deprecated atau sudah tidak digunakan lagi.
Dalam kasus, dimana komputer atau kompilator yang kamu gunakan untuk membuat kode program adalah keluaran jaman bahelak.
Hapuskeyword register khusus digunakan dalam pemrograman berbabis embed system.
HapusGunanya, adalah untuk memaksa kompilator agar menggunakan unit memori tertentu saja bergantung pada arsitektur mesin yang digunakan.
Register, adalah keyword warisan lama yang sudah cukup banyak diabaikan pada kompilator modern, kecuali terdapat kondisi dimana tidak dapat dilakukan pengambilan alamat dari variabel "register", dan pada kondisi dimana tidak dapat diasumsikan bahwa isi dari variabel register dapat dipertahankan pada seluruh pemanggilan fungsi pada kode program.
HapusTujuan awal dari penggunaan keyword register adalah untuk memaksa kompilator untuk menggunakan CPU register internal (jika tersedia) untuk kompilasi program, ketimbang menggunakan memori biasa.