2012-10-25 55 views
1

我剛剛在Minecraft中製作了一個簡單的RAM內存(帶有紅石),4位用於地址,4位用於存儲在每個單元中。我們的下一個目標是存儲不同類型的變量並以不同的方式處理它們。變量如何存儲在RAM內存中?

我們不是工程師,所以我們並不真正瞭解,但是我們做了一些相當複雜的事情,我們認爲我們可以做到這一點。問題是我們無法弄清楚如何存儲可以存儲在單個單元中的更多位的變量。我會舉一個例子。

想象一個16位變量。我們認爲在創建大單元中沒有意義,所以我們決定在每個單元中存儲4位數據。但這還不夠,我們必須將這4個單元聯繫起來。所以我們認爲我們必須創建8位單元,4位內容和4位存儲變量的下一個4位的地址。然而,4位地址對於RAM沒有任何用處,我們不能在那裏存儲任何內容。所以我們至少需要8位地址。 4bits的內容也似乎很低,我們還需要至少其他4bits來存儲變量的類型。

那麼,最後我們認爲這種技術是荒謬的,它在現實生活中不會這樣做。我們現在不知道該怎麼做。我在網上搜索了內存如何工作,以及我發現的少數內存對於我們的需求來說太複雜。

難道有人請解釋我們這是如何在現實生活中完成?

回答

2

你是在玩責怪遊戲,試圖將內存管理的所有責任都放在物理RAM實現上。實際上,RAM就是這樣的,實際存​​儲數據的存儲設備(你的紅石瓦)是你程序的責任。換句話說,不需要爲RAM提供標準化的存儲單元「鏈接」策略,因爲它是寫入並隨後讀取它的程序,因此它知道它自己的常見做法。

考慮到這一點,存儲值很容易。假設你想要一個16位整數存儲在你的4位/字RAM(所以4個字的數據)。只需將地址0到4作爲變量,就是這樣。沒有必要的「連接」,因爲你們都知道如何讀取它並寫入它,而且你不會踩在自己的腳趾上(理論上)。

增加構造的其他想法:特殊註冊表的特殊位置(用於遞歸計算的棧指針,用於圖靈機的程序指針等)。我還有一個,但是我在寫這個時忘了它,如果我記得它,我會編輯它。