如何在gnu汇编程序中使用十进制表示法发出浮点立即数操作数

时间:2017-02-05 03:28:28

标签: gcc assembly x86 floating-point gas

例如,目标平台中的0.5f为0x3F000000。我想使用类似movl $0.5,%eax而不是movl $0x3F000000,%eax

的内容

汇编程序来自TDM-GCC。

1 个答案:

答案 0 :(得分:2)

您需要使用.float, .single or .double directives

声明一个单独的常量

例如

.data
        half: .float 0.50
.text
.globl _start
        _start:
        movl half, %eax

https://en.wikibooks.org/wiki/X86_Assembly/AVX,_AVX2,_FMA3,_FMA4

您还可以在inline assembly

中使用E / F / G / H约束
static const float half = 0.5f;
__asm__ __volatile__ ("\n\
   movl %1, %eax        %1"
   : "g" (half)
   ) ;