【问题标题】:Declaring local variables in assembly在程序集中声明局部变量
【发布时间】:2010-03-17 08:07:42
【问题描述】:

是否可以在程序集中分配本地范围的内存?

例如,考虑以下(完全人为的)情况:

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

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?

或者我是否最好通过将寄存器的值压入堆栈并在完成后将其弹出来释放寄存器?

【问题讨论】:

    标签: assembly macros scope


    【解决方案1】:

    本地范围内存是一个仅适用于范围语言而非汇编的概念。

    如果您要在 C 语言中编写与函数相同的内容,您的临时文件将存储在堆栈中(或者如果有可用寄存器,则取决于 ABI)。你可以模仿同样的事情。不过,如何从堆栈中推送/弹出值取决于您使用的汇编语言。

    但是,这开始看起来非常像函数调用。

    【讨论】:

    • 啊好吧,有道理。我认为我真正追求的是宏和函数之间的区别。你的回答很好解释。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2011-09-29
    • 2011-03-10
    • 2014-02-12
    • 2021-06-03
    相关资源
    最近更新 更多