Y
Experimentally, there's no way to get a full multiplication more slow than float. It is possible that long int and 32-bit processor tracking is slower for large operations. I have a 64-bit multiplication of float-s and long-long-ints almost matched in time (+-1 second)By the way, it's interesting to see that the key is a m32, and in the 64-bit rock, the speed fell to a catastrophic low, but even then the float-up is slower. And no keys like fast-math, etc. help. It seems to be a very private case in some very unequal setting.Here's my test, if anyone's interested:#include <stdio.h>
#include <time.h>
int main(void) {
const long long int count = 100000000;
time_t start, end;
time(0);
{
long long int a = 7;
time(&start);
for(long long int i = 0; i < count; ++i) {
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
}
time(&end);
printf("a = %lld, time = %d\n", a, (int)(end - start));
}
{
float a = 7e200;
time(&start);
for(long long int i = 0; i < count; ++i) {
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
a = a * 999;
}
time(&end);
printf("a = %f, time = %d\n", a, (int)(end - start));
}
return 0;
}
Here's his results with different variations:cy6ergn0m@cgmachine tests/cpp/2 $ g++ -ffast-math -m32 main.cc
cy6ergn0m@cgmachine tests/cpp/2 $ ./a.out
a = 7409966934681833479, time = 6
a = inf, time = 146
cy6ergn0m@cgmachine tests/cpp/2 $ g++ -ffast-math main.cc
cy6ergn0m@cgmachine tests/cpp/2 $ ./a.out
a = 7409966934681833479, time = 5
a = inf, time = 6
cy6ergn0m@cgmachine tests/cpp/2 $ g++ main.cc
cy6ergn0m@cgmachine tests/cpp/2 $ ./a.out
a = 7409966934681833479, time = 4
a = inf, time = 6
cy6ergn0m@cgmachine tests/cpp/2 $ g++ -m32 main.cc
cy6ergn0m@cgmachine tests/cpp/2 $ ./a.out
a = 7409966934681833479, time = 6
a = inf, time = 145
cy6ergn0m@cgmachine tests/cpp/2 $
cy6ergn0m@cgmachine tests/cpp/2 $ cat /proc/cpuinfo | grep name
model name : Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz
model name : Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz
model name : Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz
model name : Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz
model name : Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz
model name : Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz
model name : Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz
model name : Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz
cy6ergn0m@cgmachine tests/cpp/2 $ uname -a
Linux cgmachine 2.6.33.7-desktop-2mnb #1 SMP Mon Sep 20 18:19:20 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
cy6ergn0m@cgmachine tests/cpp/2 $
As you can see, all the results of the same order. In addition to multiplying float'a in emulation mode (completing 32-bit code in 64-bit environment). However, float multiplicity is always a little behind. If count increases ten times, the difference is even more visible.cy6ergn0m@cgmachine tests/cpp/2 $ g++ main.cc
cy6ergn0m@cgmachine tests/cpp/2 $ ./a.out
a = 3874608091370758151, time = 42
a = inf, time = 57
cy6ergn0m@cgmachine tests/cpp/2 $
If the total load on the system is higher (more different processes are running off a floating block), the difference will be even more visible, as the changing contexts of floating comma operations are expensive. UPD: At the request of the workers, I bring a platoon leap without all the keys:00000000004005c4 <main>:
4005c4: 55 push %rbp
4005c5: 48 89 e5 mov %rsp,%rbp
4005c8: 48 83 ec 40 sub $0x40,%rsp
4005cc: 48 c7 45 d8 00 ca 9a movq $0x3b9aca00,-0x28(%rbp)
4005d3: 3b
4005d4: bf 00 00 00 00 mov $0x0,%edi
4005d9: e8 f2 fe ff ff callq 4004d0 <time@plt>
4005de: 48 c7 45 e0 07 00 00 movq $0x7,-0x20(%rbp)
4005e5: 00
4005e6: 48 8d 45 d0 lea -0x30(%rbp),%rax
4005ea: 48 89 c7 mov %rax,%rdi
4005ed: e8 de fe ff ff callq 4004d0 <time@plt>
4005f2: 48 c7 45 e8 00 00 00 movq $0x0,-0x18(%rbp)
4005f9: 00
4005fa: e9 9b 00 00 00 jmpq 40069a <main+0xd6>
4005ff: 48 8b 45 e0 mov -0x20(%rbp),%rax
400603: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
40060a: 48 89 45 e0 mov %rax,-0x20(%rbp)
40060e: 48 8b 45 e0 mov -0x20(%rbp),%rax
400612: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400619: 48 89 45 e0 mov %rax,-0x20(%rbp)
40061d: 48 8b 45 e0 mov -0x20(%rbp),%rax
400621: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400628: 48 89 45 e0 mov %rax,-0x20(%rbp)
40062c: 48 8b 45 e0 mov -0x20(%rbp),%rax
400630: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400637: 48 89 45 e0 mov %rax,-0x20(%rbp)
40063b: 48 8b 45 e0 mov -0x20(%rbp),%rax
40063f: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400646: 48 89 45 e0 mov %rax,-0x20(%rbp)
40064a: 48 8b 45 e0 mov -0x20(%rbp),%rax
40064e: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400655: 48 89 45 e0 mov %rax,-0x20(%rbp)
400659: 48 8b 45 e0 mov -0x20(%rbp),%rax
40065d: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400664: 48 89 45 e0 mov %rax,-0x20(%rbp)
400668: 48 8b 45 e0 mov -0x20(%rbp),%rax
40066c: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400673: 48 89 45 e0 mov %rax,-0x20(%rbp)
400677: 48 8b 45 e0 mov -0x20(%rbp),%rax
40067b: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400682: 48 89 45 e0 mov %rax,-0x20(%rbp)
400686: 48 8b 45 e0 mov -0x20(%rbp),%rax
40068a: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400691: 48 89 45 e0 mov %rax,-0x20(%rbp)
400695: 48 83 45 e8 01 addq $0x1,-0x18(%rbp)
40069a: 48 81 7d e8 ff c9 9a cmpq $0x3b9ac9ff,-0x18(%rbp)
4006a1: 3b
4006a2: 0f 9e c0 setle %al
4006a5: 84 c0 test %al,%al
4006a7: 0f 85 52 ff ff ff jne 4005ff <main+0x3b>
4006ad: 48 8d 45 c8 lea -0x38(%rbp),%rax
4006b1: 48 89 c7 mov %rax,%rdi
4006b4: e8 17 fe ff ff callq 4004d0 <time@plt>
4006b9: 48 8b 45 c8 mov -0x38(%rbp),%rax
4006bd: 89 c2 mov %eax,%edx
4006bf: 48 8b 45 d0 mov -0x30(%rbp),%rax
4006c3: 89 d1 mov %edx,%ecx
4006c5: 29 c1 sub %eax,%ecx
4006c7: 89 c8 mov %ecx,%eax
4006c9: 89 c2 mov %eax,%edx
4006cb: 48 8b 45 e0 mov -0x20(%rbp),%rax
4006cf: 48 89 c6 mov %rax,%rsi
4006d2: bf 2c 09 40 00 mov $0x40092c,%edi
4006d7: b8 00 00 00 00 mov $0x0,%eax
4006dc: e8 bf fd ff ff callq 4004a0 <printf@plt>
4006e1: b8 00 00 80 7f mov $0x7f800000,%eax
4006e6: 89 45 f4 mov %eax,-0xc(%rbp)
4006e9: 48 8d 45 d0 lea -0x30(%rbp),%rax
4006ed: 48 89 c7 mov %rax,%rdi
4006f0: e8 db fd ff ff callq 4004d0 <time@plt>
4006f5: 48 c7 45 f8 00 00 00 movq $0x0,-0x8(%rbp)
4006fc: 00
4006fd: e9 e1 00 00 00 jmpq 4007e3 <main+0x21f>
400702: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
400707: f3 0f 10 05 45 02 00 movss 0x245(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
40070e: 00
40070f: f3 0f 59 c1 mulss %xmm1,%xmm0
400713: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
400718: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
40071d: f3 0f 10 05 2f 02 00 movss 0x22f(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
400724: 00
400725: f3 0f 59 c1 mulss %xmm1,%xmm0
400729: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
40072e: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
400733: f3 0f 10 05 19 02 00 movss 0x219(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
40073a: 00
40073b: f3 0f 59 c1 mulss %xmm1,%xmm0
40073f: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
400744: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
400749: f3 0f 10 05 03 02 00 movss 0x203(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
400750: 00
400751: f3 0f 59 c1 mulss %xmm1,%xmm0
400755: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
40075a: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
40075f: f3 0f 10 05 ed 01 00 movss 0x1ed(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
400766: 00
400767: f3 0f 59 c1 mulss %xmm1,%xmm0
40076b: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
400770: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
400775: f3 0f 10 05 d7 01 00 movss 0x1d7(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
40077c: 00
40077d: f3 0f 59 c1 mulss %xmm1,%xmm0
400781: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
400786: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
40078b: f3 0f 10 05 c1 01 00 movss 0x1c1(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
400792: 00
400793: f3 0f 59 c1 mulss %xmm1,%xmm0
400797: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
40079c: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
4007a1: f3 0f 10 05 ab 01 00 movss 0x1ab(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
4007a8: 00
4007a9: f3 0f 59 c1 mulss %xmm1,%xmm0
4007ad: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
4007b2: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
4007b7: f3 0f 10 05 95 01 00 movss 0x195(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
4007be: 00
4007bf: f3 0f 59 c1 mulss %xmm1,%xmm0
4007c3: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
4007c8: f3 0f 10 4d f4 movss -0xc(%rbp),%xmm1
4007cd: f3 0f 10 05 7f 01 00 movss 0x17f(%rip),%xmm0 # 400954 <_IO_stdin_used+0x2c>
4007d4: 00
4007d5: f3 0f 59 c1 mulss %xmm1,%xmm0
4007d9: f3 0f 11 45 f4 movss %xmm0,-0xc(%rbp)
4007de: 48 83 45 f8 01 addq $0x1,-0x8(%rbp)
4007e3: 48 81 7d f8 ff c9 9a cmpq $0x3b9ac9ff,-0x8(%rbp)
4007ea: 3b
4007eb: 0f 9e c0 setle %al
4007ee: 84 c0 test %al,%al
4007f0: 0f 85 0c ff ff ff jne 400702 <main+0x13e>
4007f6: 48 8d 45 c8 lea -0x38(%rbp),%rax
4007fa: 48 89 c7 mov %rax,%rdi
4007fd: e8 ce fc ff ff callq 4004d0 <time@plt>
400802: 48 8b 45 c8 mov -0x38(%rbp),%rax
400806: 89 c2 mov %eax,%edx
400808: 48 8b 45 d0 mov -0x30(%rbp),%rax
40080c: 89 d1 mov %edx,%ecx
40080e: 29 c1 sub %eax,%ecx
400810: 89 c8 mov %ecx,%eax
400812: f3 0f 10 45 f4 movss -0xc(%rbp),%xmm0
400817: 0f 5a c0 cvtps2pd %xmm0,%xmm0
40081a: 89 c6 mov %eax,%esi
40081c: bf 41 09 40 00 mov $0x400941,%edi
400821: b8 01 00 00 00 mov $0x1,%eax
400826: e8 75 fc ff ff callq 4004a0 <printf@plt>
40082b: b8 00 00 00 00 mov $0x0,%eax
400830: c9 leaveq
400831: c3 retq
400832: 90 nop
400833: 90 nop
400834: 90 nop
400835: 90 nop
400836: 90 nop
400837: 90 nop
400838: 90 nop
400839: 90 nop
40083a: 90 nop
40083b: 90 nop
40083c: 90 nop
40083d: 90 nop
40083e: 90 nop
40083f: 90 nop
Now, if you get the keys-march=core2-mfpmath=both, it's got a few other codes:00000000004005c4 <main>:
4005c4: 55 push %rbp
4005c5: 48 89 e5 mov %rsp,%rbp
4005c8: 48 83 ec 40 sub $0x40,%rsp
4005cc: 48 c7 45 d8 00 ca 9a movq $0x3b9aca00,-0x28(%rbp)
4005d3: 3b
4005d4: bf 00 00 00 00 mov $0x0,%edi
4005d9: e8 f2 fe ff ff callq 4004d0 <time@plt>
4005de: 48 c7 45 e0 07 00 00 movq $0x7,-0x20(%rbp)
4005e5: 00
4005e6: 48 8d 45 d0 lea -0x30(%rbp),%rax
4005ea: 48 89 c7 mov %rax,%rdi
4005ed: e8 de fe ff ff callq 4004d0 <time@plt>
4005f2: 48 c7 45 e8 00 00 00 movq $0x0,-0x18(%rbp)
4005f9: 00
4005fa: e9 9a 00 00 00 jmpq 400699 <main+0xd5>
4005ff: 48 8b 45 e0 mov -0x20(%rbp),%rax
400603: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
40060a: 48 89 45 e0 mov %rax,-0x20(%rbp)
40060e: 48 8b 45 e0 mov -0x20(%rbp),%rax
400612: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400619: 48 89 45 e0 mov %rax,-0x20(%rbp)
40061d: 48 8b 45 e0 mov -0x20(%rbp),%rax
400621: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400628: 48 89 45 e0 mov %rax,-0x20(%rbp)
40062c: 48 8b 45 e0 mov -0x20(%rbp),%rax
400630: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400637: 48 89 45 e0 mov %rax,-0x20(%rbp)
40063b: 48 8b 45 e0 mov -0x20(%rbp),%rax
40063f: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400646: 48 89 45 e0 mov %rax,-0x20(%rbp)
40064a: 48 8b 45 e0 mov -0x20(%rbp),%rax
40064e: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400655: 48 89 45 e0 mov %rax,-0x20(%rbp)
400659: 48 8b 45 e0 mov -0x20(%rbp),%rax
40065d: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400664: 48 89 45 e0 mov %rax,-0x20(%rbp)
400668: 48 8b 45 e0 mov -0x20(%rbp),%rax
40066c: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400673: 48 89 45 e0 mov %rax,-0x20(%rbp)
400677: 48 8b 45 e0 mov -0x20(%rbp),%rax
40067b: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400682: 48 89 45 e0 mov %rax,-0x20(%rbp)
400686: 48 8b 45 e0 mov -0x20(%rbp),%rax
40068a: 48 69 c0 e7 03 00 00 imul $0x3e7,%rax,%rax
400691: 48 89 45 e0 mov %rax,-0x20(%rbp)
400695: 48 ff 45 e8 incq -0x18(%rbp)
400699: 48 81 7d e8 ff c9 9a cmpq $0x3b9ac9ff,-0x18(%rbp)
4006a0: 3b
4006a1: 0f 9e c0 setle %al
4006a4: 84 c0 test %al,%al
4006a6: 0f 85 53 ff ff ff jne 4005ff <main+0x3b>
4006ac: 48 8d 45 c8 lea -0x38(%rbp),%rax
4006b0: 48 89 c7 mov %rax,%rdi
4006b3: e8 18 fe ff ff callq 4004d0 <time@plt>
4006b8: 48 8b 45 c8 mov -0x38(%rbp),%rax
4006bc: 89 c2 mov %eax,%edx
4006be: 48 8b 45 d0 mov -0x30(%rbp),%rax
4006c2: 89 d1 mov %edx,%ecx
4006c4: 29 c1 sub %eax,%ecx
4006c6: 89 c8 mov %ecx,%eax
4006c8: 89 c2 mov %eax,%edx
4006ca: 48 8b 45 e0 mov -0x20(%rbp),%rax
4006ce: 48 89 c6 mov %rax,%rsi
4006d1: bf cc 08 40 00 mov $0x4008cc,%edi
4006d6: b8 00 00 00 00 mov $0x0,%eax
4006db: e8 c0 fd ff ff callq 4004a0 <printf@plt>
4006e0: b8 00 00 80 7f mov $0x7f800000,%eax
4006e5: 89 45 f4 mov %eax,-0xc(%rbp)
4006e8: 48 8d 45 d0 lea -0x30(%rbp),%rax
4006ec: 48 89 c7 mov %rax,%rdi
4006ef: e8 dc fd ff ff callq 4004d0 <time@plt>
4006f4: 48 c7 45 f8 00 00 00 movq $0x0,-0x8(%rbp)
4006fb: 00
4006fc: e9 90 00 00 00 jmpq 400791 <main+0x1cd>
400701: d9 45 f4 flds -0xc(%rbp)
400704: d9 05 ea 01 00 00 flds 0x1ea(%rip) # 4008f4 <_IO_stdin_used+0x2c>
40070a: de c9 fmulp %st,%st(1)
40070c: d9 5d f4 fstps -0xc(%rbp)
40070f: d9 45 f4 flds -0xc(%rbp)
400712: d9 05 dc 01 00 00 flds 0x1dc(%rip) # 4008f4 <_IO_stdin_used+0x2c>
400718: de c9 fmulp %st,%st(1)
40071a: d9 5d f4 fstps -0xc(%rbp)
40071d: d9 45 f4 flds -0xc(%rbp)
400720: d9 05 ce 01 00 00 flds 0x1ce(%rip) # 4008f4 <_IO_stdin_used+0x2c>
400726: de c9 fmulp %st,%st(1)
400728: d9 5d f4 fstps -0xc(%rbp)
40072b: d9 45 f4 flds -0xc(%rbp)
40072e: d9 05 c0 01 00 00 flds 0x1c0(%rip) # 4008f4 <_IO_stdin_used+0x2c>
400734: de c9 fmulp %st,%st(1)
400736: d9 5d f4 fstps -0xc(%rbp)
400739: d9 45 f4 flds -0xc(%rbp)
40073c: d9 05 b2 01 00 00 flds 0x1b2(%rip) # 4008f4 <_IO_stdin_used+0x2c>
400742: de c9 fmulp %st,%st(1)
400744: d9 5d f4 fstps -0xc(%rbp)
400747: d9 45 f4 flds -0xc(%rbp)
40074a: d9 05 a4 01 00 00 flds 0x1a4(%rip) # 4008f4 <_IO_stdin_used+0x2c>
400750: de c9 fmulp %st,%st(1)
400752: d9 5d f4 fstps -0xc(%rbp)
400755: d9 45 f4 flds -0xc(%rbp)
400758: d9 05 96 01 00 00 flds 0x196(%rip) # 4008f4 <_IO_stdin_used+0x2c>
40075e: de c9 fmulp %st,%st(1)
400760: d9 5d f4 fstps -0xc(%rbp)
400763: d9 45 f4 flds -0xc(%rbp)
400766: d9 05 88 01 00 00 flds 0x188(%rip) # 4008f4 <_IO_stdin_used+0x2c>
40076c: de c9 fmulp %st,%st(1)
40076e: d9 5d f4 fstps -0xc(%rbp)
400771: d9 45 f4 flds -0xc(%rbp)
400774: d9 05 7a 01 00 00 flds 0x17a(%rip) # 4008f4 <_IO_stdin_used+0x2c>
40077a: de c9 fmulp %st,%st(1)
40077c: d9 5d f4 fstps -0xc(%rbp)
40077f: d9 45 f4 flds -0xc(%rbp)
400782: d9 05 6c 01 00 00 flds 0x16c(%rip) # 4008f4 <_IO_stdin_used+0x2c>
400788: de c9 fmulp %st,%st(1)
40078a: d9 5d f4 fstps -0xc(%rbp)
40078d: 48 ff 45 f8 incq -0x8(%rbp)
400791: 48 81 7d f8 ff c9 9a cmpq $0x3b9ac9ff,-0x8(%rbp)
400798: 3b
400799: 0f 9e c0 setle %al
40079c: 84 c0 test %al,%al
40079e: 0f 85 5d ff ff ff jne 400701 <main+0x13d>
4007a4: 48 8d 45 c8 lea -0x38(%rbp),%rax
4007a8: 48 89 c7 mov %rax,%rdi
4007ab: e8 20 fd ff ff callq 4004d0 <time@plt>
4007b0: 48 8b 45 c8 mov -0x38(%rbp),%rax
4007b4: 89 c2 mov %eax,%edx
4007b6: 48 8b 45 d0 mov -0x30(%rbp),%rax
4007ba: 89 d1 mov %edx,%ecx
4007bc: 29 c1 sub %eax,%ecx
4007be: 89 c8 mov %ecx,%eax
4007c0: f3 0f 5a 45 f4 cvtss2sd -0xc(%rbp),%xmm0
4007c5: 89 c6 mov %eax,%esi
4007c7: bf e1 08 40 00 mov $0x4008e1,%edi
4007cc: b8 01 00 00 00 mov $0x1,%eax
4007d1: e8 ca fc ff ff callq 4004a0 <printf@plt>
4007d6: b8 00 00 00 00 mov $0x0,%eax
4007db: c9 leaveq
4007dc: c3 retq
4007dd: 90 nop
4007de: 90 nop
4007df: 90 nop