在程序集中声明局部变量
问题描述:
是否可以在程序集中分配局部范围的内存?在程序集中声明局部变量
例如,考虑以下的(完全做作)的情况:
我有两个宏,其中一个是依赖于另一个。第一个是:
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?
或者我只是更好地释放一个寄存器,将其值推入堆栈并在完成时弹出回来?
答
本地作用域内存是一种概念,仅适用于作用域语言,而不是程序集。
如果要在C中写入与函数相同的东西,则临时对象将存储在堆栈中(或者可用的寄存器,如果存在某些,取决于ABI)。你可以模仿同样的事情。如何从栈中压入/弹出值取决于您正在使用的汇编语言。
但是,这开始看起来很像一个函数调用。
好吧,这是有道理的。我认为我真正想要的是宏和函数之间的区别。你的回答很好解释。谢谢! – dckrooney 2010-03-17 08:59:50