【问题标题】:Is it possible to define a floating point constant (`equ`) in NASM?是否可以在 NASM 中定义浮点常量(`equ`)?
【发布时间】:2021-12-03 12:50:57
【问题描述】:

在 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`

是否可以定义浮点常量?

我查了manual,但信息很少。

【问题讨论】:

  • equ 指令定义符号。符号的值是地址或与地址大小相同的整数。所以没有花车适合你。

标签: assembly floating-point constants nasm


【解决方案1】:

不,equ 不适用于非整数。正如 fuz 所说:

equ 指令定义符号。符号的值是地址或与地址大小相同的整数。

相反,您可以使用%define c2 3.14 在您使用宏的每个位置获取宏的文本替换。 (与 equ 不同,它在 equ 的位置计算一次表达式。)

equ 和宏(包括%define)之间的区别对于.len equ $ - v2 之类的表达式很重要(因为$ 稍后或在其他部分具有更高的值),或者涉及您稍后使用@987654330 更改的内容@。但是对于数字文字常量并不重要;他们总是在任何地方都以相同的方式进行评估。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多