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