2010-03-17 59 views
0

是否可以在程序集中分配局部範圍的內存?在程序集中聲明局部變量

例如,考慮以下的(完全做作)的情況:

我有兩個宏,其中一個是依賴於另一個。第一個是:

minimum MACRO dest, num1, num2 
; Finds the minimum of two unsigned numbers, stores the result in dest 

而第二個是:

tripMin MACRO dest, num1, num2, num3 
; Finds the minimum of three unsigned numbers, stores the result in dest 

minimum firstMin, num1, num2 
minimum secondMin, num2, num3 
minimum dest, firstMin, secondMin 

(我知道這是不是出於各種原因一個現實的例子,但我承擔)

假設所有寄存器都被佔用,是否有任何方法可以在宏中本地聲明firstMin和secondMin?

或者我只是更好地釋放一個寄存器,將其值推入堆棧並在完成時彈出回來?

回答

1

本地作用域內存是一種概念,僅適用於作用域語言,而不是程序集。

如果要在C中寫入與函數相同的東西,則臨時對象將存儲在堆棧中(或者可用的寄存器,如果存在某些,取決於ABI)。你可以模仿同樣的事情。如何從棧中壓入/彈出值取決於您正在使用的彙編語言。

但是,這開始看起來很像一個函數調用。

+0

好吧,這是有道理的。我認爲我真正想要的是宏和函數之間的區別。你的回答很好解釋。謝謝! – dckrooney 2010-03-17 08:59:50