Advertisement
Guest User

Then we add zero-fill...

a guest
Jun 1st, 2017
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. time_vector():
  2.         push    r15
  3.         push    r14
  4.         push    r13
  5.         push    r12
  6.         push    rbp
  7.         push    rbx
  8.         sub     rsp, 8
  9.         call    std::chrono::_V2::steady_clock::now()
  10.         mov     edi, 80000000
  11.         mov     r12, rax
  12.         call    operator new(unsigned long)
  13.         mov     edx, 80000000
  14.         mov     rdi, rax
  15.         xor     esi, esi
  16.         mov     rbx, rax
  17.         call    memset
  18.         mov     edi, 80000000
  19.         call    operator new(unsigned long)
  20.         mov     rdi, rax
  21.         mov     edx, 80000000
  22.         xor     esi, esi
  23.         mov     rbp, rax
  24.         call    memset
  25.         mov     edi, 80000000
  26.         call    operator new(unsigned long)
  27.         mov     r14, rbx
  28.         xor     esi, esi
  29.         mov     rdi, rax
  30.         shr     r14, 3
  31.         mov     edx, 80000000
  32.         mov     r13d, 10000000
  33.         and     r14d, 1
  34.         call    memset
  35.         sub     r13, r14
  36.         lea     rsi, [0+r14*8]
  37.         mov     rcx, rax
  38.         mov     r9, r13
  39.         mov     r11, r13
  40.         mov     r10d, 50
  41.         lea     r8, [rbx+rsi]
  42.         lea     rdi, [rbp+0+rsi]
  43.         shr     r9
  44.         add     rsi, rax
  45.         and     r11, -2
  46. .L5:
  47.         xor     edx, edx
  48.         test    r14, r14
  49.         je      .L2
  50.         movsd   xmm0, QWORD PTR [rbx]
  51.         mov     edx, 1
  52.         addsd   xmm0, QWORD PTR [rbp+0]
  53.         movsd   QWORD PTR [rcx], xmm0
  54. .L2:
  55.         xor     eax, eax
  56.         xor     r15d, r15d
  57. .L3:
  58.         add     r15, 1
  59.         movupd  xmm0, XMMWORD PTR [rdi+rax]
  60.         addpd   xmm0, XMMWORD PTR [r8+rax]
  61.         movups  XMMWORD PTR [rsi+rax], xmm0
  62.         add     rax, 16
  63.         cmp     r15, r9
  64.         jb      .L3
  65.         cmp     r11, r13
  66.         lea     rax, [rdx+r11]
  67.         je      .L4
  68.         movsd   xmm0, QWORD PTR [rbp+0+rax*8]
  69.         addsd   xmm0, QWORD PTR [rbx+rax*8]
  70.         movsd   QWORD PTR [rcx+rax*8], xmm0
  71. .L4:
  72.         sub     r10, 1
  73.         jne     .L5
  74.         mov     rdi, rcx
  75.         call    operator delete(void*)
  76.         mov     rdi, rbp
  77.         call    operator delete(void*)
  78.         mov     rdi, rbx
  79.         call    operator delete(void*)
  80.         call    std::chrono::_V2::steady_clock::now()
  81.         add     rsp, 8
  82.         sub     rax, r12
  83.         pop     rbx
  84.         pop     rbp
  85.         pop     r12
  86.         pop     r13
  87.         pop     r14
  88.         pop     r15
  89.         ret
  90.         mov     r12, rax
  91. .L7:
  92.         mov     rdi, rbx
  93.         call    operator delete(void*)
  94.         mov     rdi, r12
  95.         call    _Unwind_Resume
  96.         mov     rdi, rbp
  97.         mov     r12, rax
  98.         call    operator delete(void*)
  99.         jmp     .L7
  100. time_pointer():
  101.         push    r15
  102.         push    r14
  103.         push    r13
  104.         push    r12
  105.         push    rbp
  106.         push    rbx
  107.         sub     rsp, 8
  108.         call    std::chrono::_V2::steady_clock::now()
  109.         mov     edi, 80000000
  110.         mov     r12, rax
  111.         call    operator new[](unsigned long)
  112.         mov     edx, 80000000
  113.         xor     esi, esi
  114.         mov     rdi, rax
  115.         mov     rbx, rax
  116.         call    memset
  117.         mov     edi, 80000000
  118.         mov     r14, rbx
  119.         call    operator new[](unsigned long)
  120.         mov     edx, 80000000
  121.         xor     esi, esi
  122.         mov     rdi, rax
  123.         mov     r13, rax
  124.         shr     r14, 3
  125.         call    memset
  126.         mov     edi, 80000000
  127.         and     r14d, 1
  128.         call    operator new[](unsigned long)
  129.         xor     esi, esi
  130.         mov     rdi, rax
  131.         mov     edx, 80000000
  132.         mov     rbp, rax
  133.         call    memset
  134.         mov     r11d, 10000000
  135.         lea     rcx, [0+r14*8]
  136.         mov     r9d, 50
  137.         sub     r11, r14
  138.         mov     r8, r11
  139.         mov     r10, r11
  140.         lea     rdi, [rbx+rcx]
  141.         lea     rsi, [r13+0+rcx]
  142.         shr     r8
  143.         add     rcx, rbp
  144.         and     r10, -2
  145. .L22:
  146.         xor     edx, edx
  147.         test    r14, r14
  148.         je      .L19
  149.         movsd   xmm0, QWORD PTR [rbx]
  150.         mov     edx, 1
  151.         addsd   xmm0, QWORD PTR [r13+0]
  152.         movsd   QWORD PTR [rbp+0], xmm0
  153. .L19:
  154.         xor     eax, eax
  155.         xor     r15d, r15d
  156. .L20:
  157.         add     r15, 1
  158.         movupd  xmm0, XMMWORD PTR [rsi+rax]
  159.         addpd   xmm0, XMMWORD PTR [rdi+rax]
  160.         movups  XMMWORD PTR [rcx+rax], xmm0
  161.         add     rax, 16
  162.         cmp     r8, r15
  163.         ja      .L20
  164.         cmp     r11, r10
  165.         lea     rax, [r10+rdx]
  166.         je      .L21
  167.         movsd   xmm0, QWORD PTR [r13+0+rax*8]
  168.         addsd   xmm0, QWORD PTR [rbx+rax*8]
  169.         movsd   QWORD PTR [rbp+0+rax*8], xmm0
  170. .L21:
  171.         sub     r9, 1
  172.         jne     .L22
  173.         mov     rdi, rbx
  174.         call    operator delete[](void*)
  175.         mov     rdi, r13
  176.         call    operator delete[](void*)
  177.         mov     rdi, rbp
  178.         call    operator delete[](void*)
  179.         call    std::chrono::_V2::steady_clock::now()
  180.         add     rsp, 8
  181.         sub     rax, r12
  182.         pop     rbx
  183.         pop     rbp
  184.         pop     r12
  185.         pop     r13
  186.         pop     r14
  187.         pop     r15
  188.         ret
  189. time_unique_ptr():
  190.         push    r15
  191.         push    r14
  192.         push    r13
  193.         push    r12
  194.         push    rbp
  195.         push    rbx
  196.         sub     rsp, 8
  197.         call    std::chrono::_V2::steady_clock::now()
  198.         mov     edi, 80000000
  199.         mov     r12, rax
  200.         call    operator new[](unsigned long)
  201.         mov     edx, 80000000
  202.         mov     rdi, rax
  203.         xor     esi, esi
  204.         mov     rbx, rax
  205.         call    memset
  206.         mov     edi, 80000000
  207.         call    operator new[](unsigned long)
  208.         mov     rdi, rax
  209.         mov     edx, 80000000
  210.         xor     esi, esi
  211.         mov     rbp, rax
  212.         call    memset
  213.         mov     edi, 80000000
  214.         call    operator new[](unsigned long)
  215.         mov     r14, rbx
  216.         xor     esi, esi
  217.         mov     rdi, rax
  218.         shr     r14, 3
  219.         mov     edx, 80000000
  220.         mov     r13d, 10000000
  221.         and     r14d, 1
  222.         call    memset
  223.         sub     r13, r14
  224.         lea     rsi, [0+r14*8]
  225.         mov     rcx, rax
  226.         mov     r9, r13
  227.         mov     r11, r13
  228.         mov     r10d, 50
  229.         lea     r8, [rbx+rsi]
  230.         lea     rdi, [rbp+0+rsi]
  231.         shr     r9
  232.         add     rsi, rax
  233.         and     r11, -2
  234. .L32:
  235.         xor     edx, edx
  236.         test    r14, r14
  237.         je      .L29
  238.         movsd   xmm0, QWORD PTR [rbx]
  239.         mov     edx, 1
  240.         addsd   xmm0, QWORD PTR [rbp+0]
  241.         movsd   QWORD PTR [rcx], xmm0
  242. .L29:
  243.         xor     eax, eax
  244.         xor     r15d, r15d
  245. .L30:
  246.         add     r15, 1
  247.         movupd  xmm0, XMMWORD PTR [rdi+rax]
  248.         addpd   xmm0, XMMWORD PTR [r8+rax]
  249.         movups  XMMWORD PTR [rsi+rax], xmm0
  250.         add     rax, 16
  251.         cmp     r9, r15
  252.         ja      .L30
  253.         cmp     r11, r13
  254.         lea     rax, [rdx+r11]
  255.         je      .L31
  256.         movsd   xmm0, QWORD PTR [rbp+0+rax*8]
  257.         addsd   xmm0, QWORD PTR [rbx+rax*8]
  258.         movsd   QWORD PTR [rcx+rax*8], xmm0
  259. .L31:
  260.         sub     r10, 1
  261.         jne     .L32
  262.         mov     rdi, rcx
  263.         call    operator delete[](void*)
  264.         mov     rdi, rbp
  265.         call    operator delete[](void*)
  266.         mov     rdi, rbx
  267.         call    operator delete[](void*)
  268.         call    std::chrono::_V2::steady_clock::now()
  269.         add     rsp, 8
  270.         sub     rax, r12
  271.         pop     rbx
  272.         pop     rbp
  273.         pop     r12
  274.         pop     r13
  275.         pop     r14
  276.         pop     r15
  277.         ret
  278.         mov     r12, rax
  279. .L34:
  280.         mov     rdi, rbx
  281.         call    operator delete[](void*)
  282.         mov     rdi, r12
  283.         call    _Unwind_Resume
  284.         mov     rdi, rbp
  285.         mov     r12, rax
  286.         call    operator delete[](void*)
  287.         jmp     .L34
  288. .LC0:
  289.         .string "Vector took         "
  290. .LC1:
  291.         .string "ns"
  292. .LC2:
  293.         .string "Pointer took        "
  294. .LC3:
  295.         .string "Unique Pointer took "
  296. main:
  297.         push    rbx
  298.         mov     edx, 20
  299.         mov     esi, OFFSET FLAT:.LC0
  300.         mov     edi, OFFSET FLAT:std::cout
  301.         call    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
  302.         mov     rax, QWORD PTR std::cout[rip]
  303.         mov     rax, QWORD PTR [rax-24]
  304.         mov     QWORD PTR std::cout[rax+16], 12
  305.         call    time_vector()
  306.         mov     edi, OFFSET FLAT:std::cout
  307.         mov     rsi, rax
  308.         call    std::basic_ostream<char, std::char_traits<char> >& std::basic_ostream<char, std::char_traits<char> >::_M_insert<long>(long)
  309.         mov     edx, 2
  310.         mov     rbx, rax
  311.         mov     esi, OFFSET FLAT:.LC1
  312.         mov     rdi, rax
  313.         call    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
  314.         mov     rdi, rbx
  315.         call    std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
  316.         mov     edx, 20
  317.         mov     esi, OFFSET FLAT:.LC2
  318.         mov     edi, OFFSET FLAT:std::cout
  319.         call    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
  320.         mov     rax, QWORD PTR std::cout[rip]
  321.         mov     rax, QWORD PTR [rax-24]
  322.         mov     QWORD PTR std::cout[rax+16], 12
  323.         call    time_pointer()
  324.         mov     edi, OFFSET FLAT:std::cout
  325.         mov     rsi, rax
  326.         call    std::basic_ostream<char, std::char_traits<char> >& std::basic_ostream<char, std::char_traits<char> >::_M_insert<long>(long)
  327.         mov     edx, 2
  328.         mov     rbx, rax
  329.         mov     esi, OFFSET FLAT:.LC1
  330.         mov     rdi, rax
  331.         call    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
  332.         mov     rdi, rbx
  333.         call    std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
  334.         mov     edx, 20
  335.         mov     esi, OFFSET FLAT:.LC3
  336.         mov     edi, OFFSET FLAT:std::cout
  337.         call    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
  338.         mov     rax, QWORD PTR std::cout[rip]
  339.         mov     rax, QWORD PTR [rax-24]
  340.         mov     QWORD PTR std::cout[rax+16], 12
  341.         call    time_unique_ptr()
  342.         mov     edi, OFFSET FLAT:std::cout
  343.         mov     rsi, rax
  344.         call    std::basic_ostream<char, std::char_traits<char> >& std::basic_ostream<char, std::char_traits<char> >::_M_insert<long>(long)
  345.         mov     edx, 2
  346.         mov     rbx, rax
  347.         mov     esi, OFFSET FLAT:.LC1
  348.         mov     rdi, rax
  349.         call    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)
  350.         mov     rdi, rbx
  351.         call    std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
  352.         xor     eax, eax
  353.         pop     rbx
  354.         ret
  355. _GLOBAL__sub_I__Z11time_vectorv:
  356.         sub     rsp, 8
  357.         mov     edi, OFFSET FLAT:std::__ioinit
  358.         call    std::ios_base::Init::Init()
  359.         mov     edx, OFFSET FLAT:__dso_handle
  360.         mov     esi, OFFSET FLAT:std::__ioinit
  361.         mov     edi, OFFSET FLAT:std::ios_base::Init::~Init()
  362.         add     rsp, 8
  363.         jmp     __cxa_atexit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement