YASM 等同于 NASM 内置 __BITS__ 宏?

YASM equivalent for NASM built-in __BITS__ macro?

我有一段 nasm 汇编代码,我希望它与 yasm 兼容,但是 运行 它上面的汇编器在一些 nasm-specific 宏上给出了错误,并且包括,主要与条件相关

%if __BITS__ == 32

其中__BITS__为当前位模式。

YASM 是否具有等效功能,或任何其他方式来根据位模式遵循代码路径?

您应该能够定义一个宏来代替 bits,像这样(未测试):

%macro myBits 1
    bits %1
    %assign __BITS__ %1
%endmacro

当然,在这种情况下,您必须将源代码中出现的每个 bits 16bits 32bits 64 替换为等效的 myBits 宏。

请注意,我不太确定 bits 在 YASM 中是如何实现的。它可能是一个宏本身(内部依赖于较低级别的指令,如 [bits])。在这种情况下,您可以重新定义 bits 宏并避免更改任何内容。

对于根本不使用 bits 指令的源代码,我只是用汇编程序的命令行参数定义 __BITS__