2014-08-31 181 views
1

那麼這個問題很簡單。 我想知道如果在程序中聲明變量是一件好事。 像這樣的例子:程序集 - 我可以在程序中聲明變量嗎?

SAMPLE PROC NEAR 
    ; PROC BODY 
RET 
VARIABLE DW 0000H 
SAMPLE ENDP 

我不認爲這應該是一個錯誤。由於RET最後可用。 我真正想做的是有一個PROC所需的常量數組。某種查詢表。

如果它不合法,我想知道爲什麼。

+1

將數據與代碼混合使用在大多數體系結構(包括x86)上都是不利的。在同一時間在L1I緩存和L1D緩存中具有相同的行是浪費。 (所有現代的CPU都有分開的L1緩存,[出於以下原因](http://stackoverflow.com/a/38549736/224132)) – 2016-08-17 08:16:31

回答

3

程序邊界在裝配中幾乎沒有意義。變量是在ENDP之前還是之後並不重要。所以是的,只要你沒有試圖將變量內容作爲代碼執行,語法就沒關係。但是這裏有一個更深層次的問題。

受保護的模式系統(Windows,Linux)通常使代碼部分只讀;試圖寫入這樣的變量會使程序崩潰。您必須使用數據部分或堆棧。

在DOS下,沒關係。

+0

這正確回答我的問題,我想。謝謝.... :) – ponir 2014-08-31 15:44:15

相關問題