假定給你一塊非常小的內存,這塊內存只有8字節,這里也沒有高級語言,沒有操作系統,你操作的數據單位是單個字節,你該怎樣讀寫這塊內存呢?
注意這里的限定,再讀一遍,沒有高級語言,沒有操作系統,在這樣的限制之下,你必須直面內存讀寫的本質。
這個本質是什么呢?
本質是你需要意識到內存就是一個一個裝有字節的小盒子,這些小盒子從0到N編好了序號。
這時如果你想計算1+2,那么你必須先把1和2分別放到兩個小盒子中,假設我們使用Store指令,把數字1放到第6號小盒子,那么用指令表示就是這樣:
store 1 6
注意看這條指令,這里出現了兩個數字:1和6,雖然都是數字,但這兩個數字的含義是不同的,一個代表數值,一個代表內存地址。
與寫對應的是讀,假設我們使用load指令,就像這樣:???????
load r1 6
現在依然有一個問題,這條指令到底是數字6寫入r1寄存器還是把第6號小盒子中裝的數字寫入r1寄存器?
可以看到,數字在這里是有歧義的,它既可以表示數值也可以表示地址,為加以區分我們需要給數字添加一個標識