NASM:为什么必须将 __float32__(1.5) 用于浮点文字而不仅仅是 1.5?

NASM: why must __float32__(1.5) be used for floating point literals instead of just 1.5?

理由是什么:

mov eax, 1.5

不适用于:

expression syntax error

并要求您做:

mov eax, __float32__(1.5)

相反?它适用于 dd 家庭的事实:

dd 1.5

让我更加好奇了

在那种情况下,其他语言功能是否会出现语法歧义?

不能像我们那样从寄存器大小推断出大小:

mov eax, 1

我也在他们的 bugtracker 上发帖,但到目前为止还没有回复:http://bugzilla.nasm.us/show_bug.cgi?id=3392309

西里尔·戈库诺夫 replied that:

That's because @dd is a directive handled separately from mov (we have two tokenizers inside). We really hope to unify them one day but due to lack of manpower it still has not been implemented.

所以基本上,没有冲突,只是历史上的不一致,可能有一天会得到解决。