2014-02-18 76 views
3

爲什麼在編寫訪問變量的指令時使用數字地址不是一個好主意?我一直在研究彙編語言,這個問題是我遇到的一個問題。彙編語言的數字地址

+0

你必須更好地解釋「數字地址」的含義。你的意思是告訴程序哪個確切的地址用於變量? – m0skit0

+0

彙編程序在彙編程序時會生成數字地址或偏移量,所以問題並不清楚。如果您的意思是固定地址,那麼有些平臺的I/O是映射內存的,而那些是固定地址(在彙編源代碼中使用等同或定義)。中斷向量表等東西也可能有一些固定的地址。 – rcgldr

回答

0

使用數字地址將您綁定到內存中的特定位置。通常情況下,應用程序可以加載到內存中的任何位置,所以如果將它加載到與編程時不同的位置,它將不起作用。即使您正在編寫駐留在低內存中的操作系統內核,新版本的內核也可能會導致您的地址下方的數據或代碼變大或變小,在這種情況下,您必須更改所有數字地址。

現在大多數處理器的間接地址和直接地址一樣快,所以使用數字地址並不會有幫助。

+0

感謝您的解釋。 – user3307068

0

這隻適用於引導裝載程序。即使在DOS下,您也不知道代碼的加載位置。

此外,如果您在參考點(變量,標籤,任何)和使用點之間插入多達一行,則數字地址會發生變化。維護是一件痛苦的事情。

+0

雖然這種擔憂是真實的,但我們甚至不知道有問題的代碼將運行在具有操作系統或具有可變加載地址的平臺上。而且IIRC DOS還支持固定地址(段內),這種地址在概念上與先前的CP/M中使用的平面二進制格式兼容。 –

+0

該OP提到他們** ** **。一位x86程序員的學生不會將目標鎖定在一個可怕的無操作系統的環境中。 –

+0

你在哪裏看到x86?即使基於x86,該如何知道該課程是針對操作系統的?我必須說,我曾經碰到的唯一一個碰到x86彙編的課程大多是裸機,但是在轉向無操作系統的嵌入式開發板之前,它在DOS上簡單地使用.com二進制文件開始。 –