DAFTAR LABEL POPULER PENELITIAN.ID
DAFTAR LABEL POPULER PENELITIAN.ID
Tampilkan selengkapnya
Tampilkan lebih sedikit
Jangan Buka Artikel Ini!
DAFTAR ARSIP POSTING PENELITIAN.ID
DAFTAR ARSIP POSTING PENELITIAN.ID
Volatile Bahasa C dan Fungsinya Tahap 1
- Dapatkan link
- Aplikasi Lainnya
Dipublikasikan Oleh
elfanmauludi
Pada level lebih tinggi, kompilator mengkonversi bahasa C menjadi bahasa kode sehingga program eksekusi yang dapat dijalankan tanpa kode program sesungguhnya. Sama dengan teknologi interpreter lainnya, teknologi kompilator juga telah mengalami perkembangan dalam hal konversi bahasa C. Ketika mengartikan sumber kode menjadi bahasa mesin, kompilator pada dasarnya mencoba melakukan optimisasi output sehingga kebutuhan bahasa mesin mejadi lebih sedikit untuk dieksekusi pada tahap akhir. Salah satu bentuk optimisasi yang dilakukan kompilator tersebut adalah menghilangkan bahasa mesin yang tidak perlu untuk mengakses variabel yang tidak berubah dari sudut pandang kompilator. Perhatikan potongan kode program berikut ini:
uint32 status = 0;
while (status == 0)
{
/* Diasumsikan bahwa status tersebut tidak akan berubah pada saat looping ataupun selama program dijalankan */
/* Selama nilai status adalah NOL, lakukan looping */
}
while (status == 0)
{
/* Diasumsikan bahwa status tersebut tidak akan berubah pada saat looping ataupun selama program dijalankan */
/* Selama nilai status adalah NOL, lakukan looping */
}
Baca Juga:
Pada proses tersebut kompilator melakukan optimisasi dalam memperlihatkan status yang tidak berubah pada saat loop. Sehingga tidak diperlukan akses status lagi dan lagi setiap kali melakukan iterasi dari pengulangan. Kompilator dapat mengkonversi perulangan menjadi infinite loop sehingga tidak perlu dilakukan proses pembacaan bahasa mesin. Catatan, bahwa kompilator tidak menyadari status khusus variabel yang dapat diubah dari luar program saat ini pada waktu apapun atau IO operasi terjadi pada perangkat peripheral untuk perangkat port IO yang telah dipetakan pada variabel. Pada kenyataannya, kompilator diharapkan untuk dapat mengakses status variabel setelah semua iterasi selesai, meskipun tidak dilakukan modifikasi ataupun perubahan pada program yang telah dikompilasi oleh kompilator tersebut.
Ketika ada pendapat yang mengatakan bahwa optimisasi kompilator dapat di turn-off untuk program, namun demikian hal tersebut belum tentu dapat dilakukan secara nyata karena beberapa hal berikut ini:
Untuk mengatasi permasalah tersebut, maka solusi yang dapat digunakan adalah menggunakan volatile.
- Setiap implementasi kompilator berbeda sehingga bukan merupakan solusi yang portabel untuk dapat melaksanakan hal tersebut.
- Hanya karena satu variabel, bukan berarti harus mematikan semua proses optimisasi yang dilakukan oleh kompilator pada keseluruhan program.
- Dengan mematikan semua proses optimisasi, program low level tidak dapat bekerja seperti yang diharapkan karena akan meningkatkan terlalu banyak ukuran dan penundaan eksekusi.
Untuk mengatasi permasalah tersebut, maka solusi yang dapat digunakan adalah menggunakan volatile.
Penggunaan "volatile", pada dasarnya, dibutuhkan untuk instruksi kompilator yang statusnya variabel khusus sehingga proses optimisasi tidak bisa dilakukan pada variabel tersebut. Untuk itu, akan didefinisikan jenis variabel seperti berikut ini:
volatile uint32 status = 0;
Untuk penyederhanaan penjelasan, disajikan contoh seperti yang diperlihatkan sebelumnya. Namun, secara umum penggunaan volatile adalah dengan pointer seperti berikut ini:
volatile uint32 * statusPtr = 0xF1230000
Berikut ini statusPtr melakukan pointer ke lokasi memori pada konten yang dapat berubah pada waktu tertentu dari beberapa perangkat peripheral. Perlu dicatat bahwa program yang dibuat mungkin tidak memiliki kontrol apapun atau pengetahuan apapun ketika memori mengalami perubahan, sehingga tujuan dari penggunaan "volatile" adalah agar kompilator tidak melakukan optimisasi untuk variabel volatile yang ditunjuk (pointer) oleh statusPtr tersebut.
Dalam hal ini "volatile" mengikuti standar dari ISO/IEC 9899 C11 - clause 6.7.3
“An object that has volatile-qualified type may be modified in ways unknown to the implementation or have other unknown side effects.”
“A volatile declaration may be used to describe an object corresponding to a memory-mapped input/output port or an object accessed by an asynchronously interrupting function. Actions on objects so declared shall not be ‘‘optimized out’’ by an implementation or reordered except as permitted by the rules for evaluating expressions.”
Pada standar C variabel "volatile" dapat diubah dari luar program dan karena hal inilah kompilator tidak seharusnya mengoptimisasi aksesnya. Sehingga dapat diperkirakan bahwa ketika memiliki banyak variabel "volatile" dalam suatu program maka dapat mengurangi beban optimisasi yang dilakukan kompilator.
volatile uint32 status = 0;
Untuk penyederhanaan penjelasan, disajikan contoh seperti yang diperlihatkan sebelumnya. Namun, secara umum penggunaan volatile adalah dengan pointer seperti berikut ini:
volatile uint32 * statusPtr = 0xF1230000
Berikut ini statusPtr melakukan pointer ke lokasi memori pada konten yang dapat berubah pada waktu tertentu dari beberapa perangkat peripheral. Perlu dicatat bahwa program yang dibuat mungkin tidak memiliki kontrol apapun atau pengetahuan apapun ketika memori mengalami perubahan, sehingga tujuan dari penggunaan "volatile" adalah agar kompilator tidak melakukan optimisasi untuk variabel volatile yang ditunjuk (pointer) oleh statusPtr tersebut.
Dalam hal ini "volatile" mengikuti standar dari ISO/IEC 9899 C11 - clause 6.7.3
“An object that has volatile-qualified type may be modified in ways unknown to the implementation or have other unknown side effects.”
“A volatile declaration may be used to describe an object corresponding to a memory-mapped input/output port or an object accessed by an asynchronously interrupting function. Actions on objects so declared shall not be ‘‘optimized out’’ by an implementation or reordered except as permitted by the rules for evaluating expressions.”
Referensi Tambahan:
- Fakta tentang Return Printf dan Scanf pada Bahasa C [klik]
- Penjelasan Singkat, Return Getchar dan Putchar pada Bahasa C [klik]
- Fakta tentang Scanset pada Bahasa C [klik]
- 4 Contoh Puts dan Printf ketika Cetak String Bahasa C [klik]
- Penjelasan Singkat, Fungsi %n Printf pada Bahasa C [klik]
- Cara Mencetak % Menggunakan Printf Bahasa C [klik]
- Perbedaan Utama Printf, Sprintf, dan Fprintf Bahasa C [klik]
Menggunakan Blog Sebagai Sarana Hobi Menulis.
- Dapatkan link
- Aplikasi Lainnya
Komentar
Posting Komentar
Hubungi admin melalui Wa : +62-896-2514-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
~ Ikatlah Ilmu dengan Memostingkannya ~
Postingan populer dari blog ini (30 Hari)
Leger Nilai Peserta Didik Angkatan Tahun Masuk 2021 2022 - 2023 2024
Dipublikasikan Oleh
elfanmauludi
Leger Nilai Peserta Didik Angkatan Tahun Masuk 2020 2021 - 2022 2023
Dipublikasikan Oleh
elfanmauludi
Penggunaan fflush(stdin) Bahasa C dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Pengertian Asosiasi Komposisi dan Agregasi Java
Dipublikasikan Oleh
elfanmauludi
Enkapsulasi Java dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Enkapsulasi didefinisikan sebagai pembungkusan data dalam satu buah unit. Enkapsulasi adalah mekanisme yang mengikat code program dan data yang dimanipulasi secara bersamaan pada bahasa pemrograman Java. Cara lain untuk berpikir mengenai enkapsulasi adalah upaya untuk melindungi atau sebagai perisai proteksi yang mencegah data untuk diakses oleh pihak luar.
Specifier %d dan %i Bahasa C dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Sebuah format specifier adalah urutan sekuensial oleh inisial tanda persen (%) yang mengindikasikan sebuah format specifier , yang digunakan untuk menentukan tipe dan format dari data untuk diambil dari stream dan menyimpannya menuju lokasi yang ditunjuk oleh argumen tambahan. Singkatnya, hal ini memberitahukan tipe dari data mana yang akan disimpan dan tipe data apa yang akan dicetak.
Membuat Rumus Matematika Bahasa C Menggunakan Library Math.h
Dipublikasikan Oleh
elfanmauludi
4 Kesalahan Umum yang Sering Terjadi pada PTK
Dipublikasikan Oleh
elfanmauludi
Ciri khas PTK adalah adanya tindakan secara nyata dan konkret yang dilakukan oleh peserta didik atas dasar instruksi dari guru. Tindakan tersebut tidak boleh sembarangan, tetapi harus dapat dibenarkan secara teoretis. Hal yang tidak kalah pentingnya adalah, bahwa tindakan tersebut harus sesuai dengan tugas profesional seorang guru, dan juga tindakan tersebut tidak boleh mengubah situasi alamiah pembelajaran yang telah ada.
7 Paradigma Penelitian pada Statistika Penelitian
Dipublikasikan Oleh
elfanmauludi
Pada kegiatan penelitian kuantitatif yang berlandaskan pada sebuah asumsi kejadian yang tidak dapat diklasifikasikan, serta korelasi kejadian yang bersifat kausal sebab akibat, maka seorang peneliti dapat memfokuskan kegiatannya pada pengamatan beberapa variabel saja . Korelasi pola pada setiap variael yang diamati tersebut selanjutnya akan dikenal sebagai paradigma penelitian atau model penelitian .
Cara Membuat Drag and Drop pada HTML
Dipublikasikan Oleh
elfanmauludi
Drag dan drop adalah sebuah konsep interaktif yang yang memudahkan user dalam menggerakkan object dari satu lokasi ke lokasi yang lain dengan cara menyeretnya ( drag ). Hal ini memungkinkan user untuk melakukan klik dan menahan klik mouse tersebut kemudian membawa elemen yang diseret menuju ke lokasi yang lain, kemudian melepaskan tombol klik mouse untuk menjatuhkan ( drop ) elemen yang diseret tersebut ( drag ). Pada HTML 5 drag dan drop lebih mudah untuk membuat bentuk programnya dan juga lebih mudah untuk digunakan.
Postingan populer dari blog ini (All Time)
Cara Menggunakan Method Overloading Java dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Overloading memungkinkan berbagai method yang berbeda untuk memiliki nama yang sama, tetapi dengan signature yang berbeda pada bahasa pemrograman Java. Signature dapat berbeda oleh angka dari input parameter atau tipe dari input parameter atapun juga keduanya. Overloading juga berkaitan dengan compile time (atau static ) polymorphism .
Enkapsulasi Java dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Enkapsulasi didefinisikan sebagai pembungkusan data dalam satu buah unit. Enkapsulasi adalah mekanisme yang mengikat code program dan data yang dimanipulasi secara bersamaan pada bahasa pemrograman Java. Cara lain untuk berpikir mengenai enkapsulasi adalah upaya untuk melindungi atau sebagai perisai proteksi yang mencegah data untuk diakses oleh pihak luar.
Acces Modifier Java dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Menerima Turunan Program Java Menggunakan Inheritance
Dipublikasikan Oleh
elfanmauludi
Operator Relasi dan Logika Bahasa C dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Apa fungsi keyword volatile pada bahasa C?
BalasHapusKeyword atau kata kunci volatile pada bahasa C adalah suatu kualifikasi yang diterapkan ke suatu variabel tertentu ketika variabel tersebut dideklarasikan. Dengan menggunakan keyword volatile tersebut maka kompilator dapat mengetahui bahwa nilai variabel tersebut dapat berubah kapan saja tanpa tindakan apapun yang diambil oleh kode program yang ditemukan kompilator selama proses kompilasi.
HapusKeyword volatile dapat diubah dari luar kode program yang dikompilasi oleh kompilator. Contoh, sebuah program dapat memetakan variabel volatile ke register yang dipetakan oleh memori, dimana dalam hal ini kompilator tidak akan menerapkan optimisasi apapun ke dalam kode program yang menangani variabel volatile tersebut.
BalasHapusKapan keyword volatile dapat digunakan?
BalasHapusKeyword volatile dapat digunakan ketika ingin mencegah kompilator untuk menerapkan suatu optimisasi apapun pada objek yang dapat berubah dengan cara yang tidak dapat ditentukan atau diprediksi oleh kompilator. Dimana objek yang dideklarasikan sebagai volatile tersebut akan dihilangkan dari proses optimisasi karena nilainya dapat diubah oleh kode program diluar dari cakupan kode program itu sendiri dan kapan saja.
Hapus