... bahwa program tertentu hanya memberi tahu CPU untuk mengambil info dari alamat tertentu dan program menentukan cara mengobatinya.
Persis. Tetapi RAM tidak dibaca "secara berurutan", dan itu adalah singkatan dari Random Access Memory yang justru sebaliknya.
Selain mengetahui apa byte adalah , Anda bahkan tidak tahu apakah itu byte , atau sebuah fragmen dari item yang lebih besar seperti angka floating-point.
Saya ingin menambahkan jawaban lain dengan memberikan beberapa contoh spesifik.
Pertimbangkan 01000001
. Program dapat menyalinnya dari satu tempat ke tempat lain sebagai bagian dari paket besar data tanpa memperhatikan artinya. Tetapi menyalin itu ke alamat yang digunakan oleh buffer video mode teks akan menyebabkan surat itu A
muncul di beberapa posisi di layar. Tindakan yang sama persis ketika kartu berada dalam mode grafis CGA akan menampilkan piksel merah dan piksel biru.
Dalam register, bisa jadi nomor 65 sebagai bilangan bulat. Melakukan aritmatika untuk mengatur bit 32-an bisa berarti apa saja tanpa konteks, tetapi mungkin secara khusus mengubah huruf menjadi huruf kecil.
CPU 8086 (masih) memiliki instruksi khusus yang disebut DAA ※ yang digunakan ketika register memiliki 2 angka desimal, jadi jika Anda hanya menggunakan instruksi itu Anda menafsirkannya sebagai dua digit 41
.
Program macet karena kata memori dibaca berpikir itu adalah pointer ketika sesuatu yang lain disimpan di sana.
Menggunakan debugger, memeriksa memori, peta digunakan untuk memandu interpretasi untuk tampilan. Tanpa informasi simbol ini, debugger tingkat rendah memungkinkan Anda menentukan: menunjukkan alamat ini sebagai kata 16-bit, menunjukkan alamat ini sebagai titik mengambang yang panjang, sebagai string ... apa pun. Melihat dump paket jaringan atau format file yang tidak dikenal, membingungkan itu adalah sebuah tantangan.
Itu adalah sumber utama kekuatan dan fleksibilitas dalam arsitektur komputer modern: sel memori dapat berarti apa saja , data atau instruksi, tersirat hanya dalam apa yang "berarti" untuk program dengan apa yang dilakukannya dengan nilai dan bagaimana hal itu mempengaruhi operasi selanjutnya. artinya lebih dalam dari lebar integer: apakah karakter ini ... karakter dalam ascii atau ebcdic? Membentuk kata dalam bahasa Inggris atau kode produk SQU? Alamat tujuan pengiriman atau alamat pengirimnya? Interpretasi level terendah (bit logis; bilangan bulat, ditandatangani atau tidak ditandatangani; float; bcd; pointer) kontekstual pada level set instruksi, tetapi Anda melihat bahwa itu semua konteks pada beberapa level: the toalamat adalah apa itu karena lokasi itu tercetak di amplop. Itu kontekstual dengan aturan tukang pos, bukan CPU. Konteksnya adalah satu kontinum besar, dengan bit di satu ujungnya.
※ Catatan Kaki: Instruksi DAA dikodekan sebagai byte 00100111
. Jadi byte itu adalah instruksi yang disebutkan sebelumnya jika dibaca dalam aliran instruksi, dan digit 27
jika ditafsirkan sebagai digit bcd, dan 0x27 = 39 sebagai bilangan bulat, yang merupakan angka 9 dalam ASCII, dan bagian dari tabel interrupt (setengah dari INT 13 Alamat 2-byte, digunakan untuk rutinitas layanan BIOS).