Mar*_*cus 2 floating-point assembly constants nasm
在 NASM 中,可以定义整数常量 ( equ),但是,对浮点值执行相同操作会导致错误:
section .data
c1 equ 3 ; ok
v2 dq 3.14 ; ok
c2 equ 3.14 ; not ok: `my.asm:7: error: expression syntax error`
Run Code Online (Sandbox Code Playgroud)
是否可以定义浮点常量?
我查过手册,但信息很少。
不,equ不适用于非整数。正如福兹所说的那样:
该
equ指令定义了符号。符号的值是一个地址或与地址大小相同的整数。
相反,您可以%define c2 3.14在使用宏的每个点处获取宏的文本替换。equ(与在 的位置对表达式求值一次相反equ。)
equ和 宏(包括%define)之间的差异对于诸如.len equ $ - v2(因为$稍后或在其他部分中具有更高的值)之类的表达式很重要,或者涉及稍后使用%assign. 但这对于数字常量来说并不重要;他们在任何地方总是以同样的方式进行评估。