YASM相当于NASM内置的__BITS__宏?

时间:2015-09-29 00:07:11

标签: assembly x86 nasm yasm

我有一段nasm汇编代码,我希望与yasm兼容,但在其上运行汇编程序会在一些特定于nasm的宏上出错,并且包括,主要与条件

相关
%if __BITS__ == 32

其中__BITS__是当前位模式。

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

1 个答案:

答案 0 :(得分:1)

你应该可以定义一个宏来代替bits,就像这样(未经测试):

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

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

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

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