
		endlessRiver
		
		(usa Ubuntu)
		
		Enviado em 11/12/2020 - 13:28h 
		Tenho o seguinte código em C:
#include <stdio.h>
int main (){
 float x = 1.7, y;
 y = x - 1.4;
 printf ("y = 1.7-1.4 = %10.13f\n", y);
}
Ao fazer a compilação com o gcc e usando a flag -m32 (Compilar em 32 bits), recebo o seguinte codigo em assemby:
.file	"teste.c"
	.text
	.section	.rodata
.LC2:
	.string	"y = 1.7-1.4 = %10.13f\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr32
	leal	4(%esp), %ecx
	.cfi_def_cfa 1, 0
	andl	$-16, %esp
	pushl	-4(%ecx)
	pushl	%ebp
	.cfi_escape 0x10,0x5,0x2,0x75,0
	movl	%esp, %ebp
	pushl	%ecx
	.cfi_escape 0xf,0x3,0x75,0x7c,0x6
	subl	$20, %esp
	flds	.LC0
	fstps	-16(%ebp)
	flds	-16(%ebp)
	fldl	.LC1
	fsubrp	%st, %st(1)
	fstps	-12(%ebp)
	flds	-12(%ebp)
	subl	$4, %esp
	leal	-8(%esp), %esp
	fstpl	(%esp)
	pushl	$.LC2
	call	printf
	addl	$16, %esp
	movl	$0, %eax
	movl	-4(%ebp), %ecx
	.cfi_def_cfa 1, 0
	leave
	.cfi_restore 5
	leal	-4(%ecx), %esp
	.cfi_def_cfa 4, 4
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.section	.rodata
	.align 4
.LC0:
	.long	1071225242
	.align 8
.LC1:
	.long	1717986918
	.long	1073112678
	.ident	"GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 4
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 4
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 4
4:
Eu sei que o numero 1071225242 (Em LC01) reprensenta em decimal, a representação de 1.7 em ponto flutuante 32 bits. Mas o que significam os outros longs em LC1, especificamente 1717986918 e 1073112678?