Saya membaca lembar data dan saya menemukan variabel didefinisikan sebagai unsigned char near Sample_X
. Apa ini, dan bagaimana perbedaannya unsigned char Sample_X
?
12
Saya membaca lembar data dan saya menemukan variabel didefinisikan sebagai unsigned char near Sample_X
. Apa ini, dan bagaimana perbedaannya unsigned char Sample_X
?
near
adalah contoh dari specifier kelas penyimpanan . Ini memberitahu kompiler sesuatu tentang bagaimana atau di mana penyimpanan untuk variabel harus dialokasikan. (Lihat jawaban filo, di bawah, untuk informasi lebih lanjutnear
).Jawaban:
MCU yang ditentukan di sini adalah seri Freescale MC9C08 , yang menggunakan versi arsitektur HC08 yang sedikit ditingkatkan. Ini adalah inti 8-bit, yang (seperti banyak lainnya) memiliki instruksi lebih pendek dan akses lebih cepat ke alamat "halaman nol" daripada yang lain. Alamat halaman nol hanya panjangnya 8 bit, bukan 16 bit, jadi instruksi yang mereferensikannya bisa 2 byte, bukan 3, dan hasilnya 1 siklus lebih sedikit untuk dieksekusi .
Kata kunci "dekat" memerintahkan kompiler untuk meletakkan variabel dalam "halaman nol" jika memungkinkan, untuk kinerja yang lebih baik. Kompiler yang secara khusus ditulis untuk pengembangan yang disematkan, seperti ini , biasanya mengimplementasikan ekstensi tersebut ke bahasa (di sini digambarkan sebagai "Dukungan C untuk Zero Page")
sumber
register
kata kunci (untuk kasus di mana Anda benar-benar yakin bahwa ini adalah di mana Anda perlu optimasi), tetapi sedikit kurang ekstrim?Tergantung pada arsitektur CPU, mungkin ada instruksi berbeda untuk mengakses data di alamat yang berbeda. Berikut adalah contoh dari Keil untuk salah satu kompiler mereka.
Akses dekat memiliki batas memori tertentu, jadi Anda dapat memberikan petunjuk kepada kompiler untuk menempatkan beberapa variabel yang sering digunakan di area yang dapat diakses dengan instruksi yang lebih pendek (jelas menggambarkan akses ke ruang alamat 32-bit lebih besar dari alamat 16-bit ruang). Ini dapat diterjemahkan menjadi kode yang lebih kecil / lebih cepat.
sumber
far
dan menunjuknear
pada arsitektur 8086 yang sebagian besar sudah usang. Kata kunci yang sama digunakan dalam mode yang terkait tetapi berbeda pada mikrokontroler 8-bit.