Disassembly of section .text: 0000000000400410
: #include #include int main(int argc, char **argv) { 400410: 41 56 push %r14 400412: 41 55 push %r13 400414: 41 54 push %r12 400416: 55 push %rbp 400417: 53 push %rbx 400418: 48 83 ec 20 sub $0x20,%rsp 40041c: 45 31 ed xor %r13d,%r13d 40041f: 4d 89 ee mov %r13,%r14 400422: 66 49 0f 6e c5 movq %r13,%xmm0 for (int i = 0; i < 10000; i++) { 400427: 31 db xor %ebx,%ebx 400429: 48 bd 9a 99 99 99 99 movabs $0x3fc999999999999a,%rbp 400430: 99 c9 3f #include #include int main(int argc, char **argv) { 400433: 49 bc 00 00 00 00 00 movabs $0x4330000000000000,%r12 40043a: 00 30 43 40043d: f2 0f 10 15 2b 03 00 movsd 0x32b(%rip),%xmm2 # 400770 <_IO_stdin_used+0x40> 400444: 00 400445: e9 c4 00 00 00 jmpq 40050e 40044a: f2 0f 2a cb cvtsi2sd %ebx,%xmm1 40044e: 66 48 0f 6e c5 movq %rbp,%xmm0 400453: f2 0f 59 c8 mulsd %xmm0,%xmm1 400457: 66 0f 28 c1 movapd %xmm1,%xmm0 40045b: 66 0f 28 d9 movapd %xmm1,%xmm3 40045f: 66 0f 54 da andpd %xmm2,%xmm3 400463: 66 49 0f 6e e4 movq %r12,%xmm4 400468: 66 0f 2e e3 ucomisd %xmm3,%xmm4 40046c: 76 23 jbe 400491 40046e: f2 48 0f 2c c1 cvttsd2si %xmm1,%rax 400473: f2 48 0f 2a d8 cvtsi2sd %rax,%xmm3 400478: f2 0f 10 05 00 03 00 movsd 0x300(%rip),%xmm0 # 400780 <_IO_stdin_used+0x50> 40047f: 00 400480: 66 0f 28 e1 movapd %xmm1,%xmm4 400484: f2 0f c2 e3 06 cmpnlesd %xmm3,%xmm4 400489: 66 0f 54 c4 andpd %xmm4,%xmm0 40048d: f2 0f 58 c3 addsd %xmm3,%xmm0 400491: 66 0f 28 e1 movapd %xmm1,%xmm4 400495: 66 0f 28 d9 movapd %xmm1,%xmm3 400499: 66 0f 54 da andpd %xmm2,%xmm3 40049d: 66 49 0f 6e ec movq %r12,%xmm5 4004a2: 66 0f 2e eb ucomisd %xmm3,%xmm5 4004a6: 76 27 jbe 4004cf 4004a8: f2 48 0f 2c c1 cvttsd2si %xmm1,%rax 4004ad: f2 48 0f 2a d8 cvtsi2sd %rax,%xmm3 4004b2: 66 0f 28 e3 movapd %xmm3,%xmm4 4004b6: f2 0f c2 e1 06 cmpnlesd %xmm1,%xmm4 4004bb: f2 0f 10 2d bd 02 00 movsd 0x2bd(%rip),%xmm5 # 400780 <_IO_stdin_used+0x50> 4004c2: 00 4004c3: 66 0f 54 e5 andpd %xmm5,%xmm4 4004c7: f2 0f 5c dc subsd %xmm4,%xmm3 4004cb: 66 0f 28 e3 movapd %xmm3,%xmm4 4004cf: 66 49 0f 7e e6 movq %xmm4,%r14 4004d4: 66 0f 28 d9 movapd %xmm1,%xmm3 4004d8: 66 0f 54 da andpd %xmm2,%xmm3 4004dc: 66 49 0f 6e e4 movq %r12,%xmm4 4004e1: 66 0f 2e e3 ucomisd %xmm3,%xmm4 4004e5: 76 22 jbe 400509 4004e7: f2 0f 58 1d 99 02 00 addsd 0x299(%rip),%xmm3 # 400788 <_IO_stdin_used+0x58> 4004ee: 00 4004ef: f2 48 0f 2c c3 cvttsd2si %xmm3,%rax 4004f4: f2 48 0f 2a d8 cvtsi2sd %rax,%xmm3 4004f9: 66 0f 28 ea movapd %xmm2,%xmm5 4004fd: 66 0f 55 e9 andnpd %xmm1,%xmm5 400501: 66 0f 28 cd movapd %xmm5,%xmm1 400505: 66 0f 56 cb orpd %xmm3,%xmm1 400509: 66 49 0f 7e cd movq %xmm1,%r13 for (int i = 0; i < 10000; i++) { double y = (double)i / 5; printf("==== %d/5 = %f ====\n"); 40050e: bf 34 07 40 00 mov $0x400734,%edi 400513: 31 c0 xor %eax,%eax 400515: f2 0f 11 44 24 10 movsd %xmm0,0x10(%rsp) 40051b: f2 0f 11 14 24 movsd %xmm2,(%rsp) 400520: e8 bb fe ff ff callq 4003e0 printf("ceil : %f", ceil(y)); 400525: f2 0f 10 44 24 10 movsd 0x10(%rsp),%xmm0 40052b: bf 49 07 40 00 mov $0x400749,%edi 400530: b8 01 00 00 00 mov $0x1,%eax 400535: e8 a6 fe ff ff callq 4003e0 printf(" floor : %f", floor(y)); 40053a: 66 49 0f 6e c6 movq %r14,%xmm0 40053f: bf 53 07 40 00 mov $0x400753,%edi 400544: b8 01 00 00 00 mov $0x1,%eax 400549: e8 92 fe ff ff callq 4003e0 printf(" round : %f\n", round(y)); 40054e: 66 49 0f 6e c5 movq %r13,%xmm0 400553: bf 5f 07 40 00 mov $0x40075f,%edi 400558: b8 01 00 00 00 mov $0x1,%eax 40055d: e8 7e fe ff ff callq 4003e0 #include #include int main(int argc, char **argv) { for (int i = 0; i < 10000; i++) { 400562: 83 c3 01 add $0x1,%ebx 400565: 81 fb 10 27 00 00 cmp $0x2710,%ebx 40056b: f2 0f 10 14 24 movsd (%rsp),%xmm2 400570: 0f 85 d4 fe ff ff jne 40044a printf("ceil : %f", ceil(y)); printf(" floor : %f", floor(y)); printf(" round : %f\n", round(y)); } return 0; } 400576: 31 c0 xor %eax,%eax 400578: 48 83 c4 20 add $0x20,%rsp 40057c: 5b pop %rbx 40057d: 5d pop %rbp 40057e: 41 5c pop %r12 400580: 41 5d pop %r13 400582: 41 5e pop %r14 400584: c3 retq 400585: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40058c: 00 00 00 40058f: 90 nop