在程序集中声明局部变量

时间:2010-03-17 08:07:42

标签: assembly macros scope

是否可以在汇编中分配本地范围的内存?

例如,考虑以下(完全做作的)情况:

我有两个宏,其中一个依赖于另一个宏。第一个是:

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 个答案:

答案 0 :(得分:1)

本地作用域内存是一种仅适用于作用域语言而非汇编语言的概念。

如果你要编写与C中的函数相同的东西,那么你的临时函数将存储在堆栈中(如果存在某些函数,则存储在可用的寄存器中,具体取决于ABI)。你可以模仿同样的事情。如何从堆栈中推送/弹出值取决于您使用的汇编语言。

然而,这开始看起来非常像函数调用。