2010-03-17 58 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