1

我有一段 nasm 汇编代码,我希望它与 yasm 兼容,但在其上运行汇编程序会在几个 nasm 特定的宏和包括错误,主要与条件有关

%if __BITS__ == 32

__BITS__当前位模式在哪里。

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

4

1 回答 1

1

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

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

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

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

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

于 2015-09-29T03:23:32.560 回答