如何在 gnu 汇编程序中使用十进制表示形式发出浮点立即操作数
How to emit floating point immediate operand using decimal representation in gnu assembler
例如0.5f在目标平台中为0x3F000000。我想使用 movl [=10=].5,%eax
而不是 movl [=11=]x3F000000,%eax
汇编程序来自 TDM-GCC。
您需要使用 .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)
) ;
例如0.5f在目标平台中为0x3F000000。我想使用 movl [=10=].5,%eax
而不是 movl [=11=]x3F000000,%eax
汇编程序来自 TDM-GCC。
您需要使用 .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)
) ;