是否可以在汇编中分配本地范围的内存?
例如,考虑以下(完全做作的)情况:
我有两个宏,其中一个依赖于另一个宏。第一个是:
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?
或者我最好通过将其值推入堆栈并在完成后将其弹回来释放寄存器?
答案 0 :(得分:1)
本地作用域内存是一种仅适用于作用域语言而非汇编语言的概念。
如果你要编写与C中的函数相同的东西,那么你的临时函数将存储在堆栈中(如果存在某些函数,则存储在可用的寄存器中,具体取决于ABI)。你可以模仿同样的事情。如何从堆栈中推送/弹出值取决于您使用的汇编语言。
然而,这开始看起来非常像函数调用。