【问题标题】:NASM trying to add variables to different sections inside a macroNASM 试图将变量添加到宏内的不同部分
【发布时间】:2020-06-06 13:05:23
【问题描述】:

我想创建一个宏来初始化协同程序,所以我需要为每个变量取一个不同的名称。 为此,我将为每个协同程序获得一个唯一的 ID。 这是有问题的代码:

    %macro initialize 1 
section .bss
    STK%1: resb STKSZ

; section .data
;     CO%1: dd CO%1code
;     Flags%1: dd 0
;     SP%1: dd STK%1 + STKSZ
section .text

%endmacro 

也许我试图将 ID 号链接到给定的字符串(如:STK%1)是不可能的? 甚至可以修改宏内的部分吗? 如果可能的话,我怎么能在我的宏中做到这一点? 谢谢!

【问题讨论】:

  • 您所做的看起来是正确的,应该适用于 NASM。你有什么特别的问题吗?
  • 要返回原始部分,无论是什么,而不是切换到 .text,请参阅 nasm.us/doc/nasmdoc7.html#section-7.3 以获取 __?SECT?__

标签: assembly macros nasm coroutine


【解决方案1】:

我想就我自己的问题提出一个答案, 我对这个问题所做的是实现一个“数组”,它将保存每个协同程序的变量。 每个协程都会得到一个唯一的 ID 号,他会使用自己的 ID 在“数组”中找到自己的变量。 假设每个协程有5个变量,那么当前协程会这样取他的变量:array[(ID*5)+0] ... array[(ID*5)+4] . 希望我的解决方案也能帮助其他程序员。

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多