我有一段 nasm 汇编代码,我希望它与 yasm 兼容,但在其上运行汇编程序会在几个 nasm 特定的宏和包括错误,主要与条件有关
%if __BITS__ == 32
__BITS__
当前位模式在哪里。
YASM 是否具有等效的功能,或者根据位模式遵循代码路径的任何其他方式?
您应该能够定义一个宏来代替bits
,像这样(未经测试):
%macro myBits 1
bits %1
%assign __BITS__ %1
%endmacro
当然,在这种情况下,您必须用等效的宏替换源代码中出现的bits 16
,bits 32
和。bits 64
myBits
请注意,我不太确定bits
在 YASM 中是如何实现的。它可能是一个宏本身(内部依赖于较低级别的指令,如[bits]
)。在这种情况下,您可以重新定义bits
宏并避免更改任何内容。
对于根本不使用该bits
指令的源代码,我只需__BITS__
使用汇编程序的命令行参数进行定义。