This is the code generated by gas64. What do you think about it ?
#Ox are tags put by the optimization process.
I have just added '#====' to separate the interesting parts and commented 'int3' to get an executable.
Code: Select all
.intel_syntax noprefix
.file "test.bas"
.section .text
.text
.globl main
main:
push rbp
mov rbp,rsp
sub rsp, 192
call __main
mov DWORD PTR 16[rbp], ecx
mov QWORD PTR 24[rbp], rdx
#O4lea r11, -116[rbp]
#O4mov DWORD PTR [r11], 0
mov DWORD PTR -116[rbp], 0 #Optim 4
mov ecx, 16[rbp]
mov rdx, 24[rbp]
xor r8d, r8d
call fb_Init
.Lt_0002:
#O4lea r11, -120[rbp]
#O4mov DWORD PTR [r11], 0
mov DWORD PTR -120[rbp], 0 #Optim 4
#O4lea r11, -128[rbp]
#O4mov QWORD PTR [r11], 0
mov QWORD PTR -128[rbp], 0 #Optim 4
#O4lea r11, -136[rbp]
#O4mov QWORD PTR [r11], 0
mov QWORD PTR -136[rbp], 0 #Optim 4
mov rax, 0x3FFFFFFFCA501ACB # DBL=1.9999998
mov QWORD PTR -144[rbp], rax
mov QWORD PTR -152[rbp], 1
.Lt_0007:
# int 3
#===============================
pxor xmm0,xmm0
cvtsi2sd xmm0, QWORD PTR -152[rbp]
movq r11, xmm0
#O1 movq xmm0, r11
mov rax, 0x4000000000000000 # DBL=2
movq xmm1, rax
divsd xmm0, xmm1
#O3movq r10, xmm0
#O3movq xmm1, r10
movq xmm1, xmm0 #Optim 3
cvtsd2ss xmm0, xmm1
#O3movd r11d, xmm0
#O3mov -120[rbp], r11d
movss -120[rbp], xmm0 #Optim 3
#================================
nop
#=================================
movss xmm0, -120[rbp]
roundss xmm0,xmm0,4
cvttss2si rax, xmm0
#O2mov r11, rax
#O2mov -128[rbp], r11
mov -128[rbp], rax #Optim 2
#==================================
nop
#==================================
pxor xmm0,xmm0
cvtsi2sd xmm0, QWORD PTR -152[rbp]
movq r11, xmm0
#O1 movq xmm0, r11
mov rax, 0x4000000000000000 # DBL=2
movq xmm1, rax
divsd xmm0, xmm1
movq r10, xmm0
#O1 movq xmm0, r10
call floor
movq r10, xmm0
#O1 movq xmm0, r10
roundsd xmm0,xmm0,4
cvttsd2si rax, xmm0
#O2mov r11, rax
#O2mov -136[rbp], r11
mov -136[rbp], rax #Optim 2
#===============================
nop
nop
nop
xor ecx, ecx
mov rdx, -152[rbp]
mov r8d, 2
call fb_PrintLongint
pxor xmm0,xmm0
cvtsi2sd xmm0, QWORD PTR -152[rbp]
movq r11, xmm0
#O1 movq xmm0, r11
mov rax, 0x4000000000000000 # DBL=2
movq xmm1, rax
divsd xmm0, xmm1
movq r10, xmm0
xor ecx, ecx
movq xmm1, r10
mov r8d, 2
call fb_PrintDouble
xor ecx, ecx
movss xmm1, -120[rbp]
mov r8d, 2
call fb_PrintSingle
xor ecx, ecx
mov rdx, -128[rbp]
mov r8d, 2
call fb_PrintLongint
xor ecx, ecx
mov rdx, -136[rbp]
mov r8d, 1
call fb_PrintLongint
.Lt_0005:
inc QWORD PTR -152[rbp]
.Lt_0004:
cmp QWORD PTR -152[rbp], 20
jle .Lt_0007
.Lt_0006:
mov ecx, -1
call fb_Sleep
xor ecx, ecx
call fb_End
.Lt_0003:
xor ecx, ecx
call fb_End
mov eax, -116[rbp]
mov rsp,rbp
pop rbp
ret