Facebook
From levent, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 129
  1. .LC0:
  2.         .string "input a string with a dollar sign: "
  3. .LC1:
  4.         .string "the input string is rejekted"
  5. .LC2:
  6.         .string "the inpur sting is accepted "
  7. main:
  8.         push    rbp
  9.         mov     rbp, rsp
  10.         push    rbx
  11.         sub     rsp, 56
  12.         lea     rax, [rbp-64]
  13.         mov     rdi, rax
  14.         call    std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string() [complete object constructor]
  15.         mov     esi, OFFSET FLAT:.LC0
  16.         mov     edi, OFFSET FLAT:_ZSt4cout
  17.         call    std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
  18.         lea     rax, [rbp-64]
  19.         mov     rsi, rax
  20.         mov     edi, OFFSET FLAT:_ZSt3cin
  21.         call    std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
  22.         mov     DWORD PTR [rbp-28], 0
  23. .L3:
  24.         mov     eax, DWORD PTR [rbp-28]
  25.         movsx   rdx, eax
  26.         lea     rax, [rbp-64]
  27.         mov     rsi, rdx
  28.         mov     rdi, rax
  29.         call    std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
  30.         movzx   eax, BYTE PTR [rax]
  31.         cmp     al, 125
  32.         setne   al
  33.         test    al, al
  34.         je      .L2
  35.         add     DWORD PTR [rbp-28], 1
  36.         jmp     .L3
  37. .L2:
  38.         mov     eax, DWORD PTR [rbp-28]
  39.         movsx   rdx, eax
  40.         lea     rax, [rbp-64]
  41.         mov     rsi, rdx
  42.         mov     rdi, rax
  43.         call    std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
  44.         movzx   eax, BYTE PTR [rax]
  45.         cmp     al, 36
  46.         setne   al
  47.         test    al, al
  48.         je      .L4
  49.         mov     esi, OFFSET FLAT:.LC1
  50.         mov     edi, OFFSET FLAT:_ZSt4cout
  51.         call    std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
  52. .L4:
  53.         lea     rax, [rbp-64]
  54.         mov     esi, 0
  55.         mov     rdi, rax
  56.         call    std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
  57.         movzx   eax, BYTE PTR [rax]
  58.         cmp     al, 97
  59.         setne   al
  60.         test    al, al
  61.         je      .L5
  62.         mov     esi, OFFSET FLAT:.LC1
  63.         mov     edi, OFFSET FLAT:_ZSt4cout
  64.         call    std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
  65. .L5:
  66.         mov     DWORD PTR [rbp-32], 0
  67. .L9:
  68.         mov     eax, DWORD PTR [rbp-32]
  69.         cmp     eax, DWORD PTR [rbp-28]
  70.         jg      .L6
  71.         mov     eax, DWORD PTR [rbp-32]
  72.         movsx   rdx, eax
  73.         lea     rax, [rbp-64]
  74.         mov     rsi, rdx
  75.         mov     rdi, rax
  76.         call    std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
  77.         movzx   eax, BYTE PTR [rax]
  78.         cmp     al, 98
  79.         sete    al
  80.         test    al, al
  81.         je      .L7
  82.         add     DWORD PTR [rbp-24], 1
  83. .L7:
  84.         mov     eax, DWORD PTR [rbp-32]
  85.         movsx   rdx, eax
  86.         lea     rax, [rbp-64]
  87.         mov     rsi, rdx
  88.         mov     rdi, rax
  89.         call    std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long)
  90.         movzx   eax, BYTE PTR [rax]
  91.         cmp     al, 99
  92.         sete    al
  93.         test    al, al
  94.         je      .L8
  95.         add     DWORD PTR [rbp-20], 1
  96. .L8:
  97.         add     DWORD PTR [rbp-32], 1
  98.         jmp     .L9
  99. .L6:
  100.         mov     edx, DWORD PTR [rbp-24]
  101.         mov     eax, edx
  102.         add     eax, eax
  103.         add     edx, eax
  104.         mov     eax, DWORD PTR [rbp-20]
  105.         add     eax, eax
  106.         cmp     edx, eax
  107.         je      .L10
  108.         mov     esi, OFFSET FLAT:.LC1
  109.         mov     edi, OFFSET FLAT:_ZSt4cout
  110.         call    std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
  111.         jmp     .L11
  112. .L10:
  113.         mov     esi, OFFSET FLAT:.LC2
  114.         mov     edi, OFFSET FLAT:_ZSt4cout
  115.         call    std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
  116. .L11:
  117.         mov     ebx, 0
  118.         lea     rax, [rbp-64]
  119.         mov     rdi, rax
  120.         call    std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
  121.         mov     eax, ebx
  122.         jmp     .L15
  123.         mov     rbx, rax
  124.         lea     rax, [rbp-64]
  125.         mov     rdi, rax
  126.         call    std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() [complete object destructor]
  127.         mov     rax, rbx
  128.         mov     rdi, rax
  129.         call    _Unwind_Resume
  130. .L15:
  131.         add     rsp, 56
  132.         pop     rbx
  133.         pop     rbp
  134.         ret
  135. __static_initialization_and_destruction_0(int, int):
  136.         push    rbp
  137.         mov     rbp, rsp
  138.         sub     rsp, 16
  139.         mov     DWORD PTR [rbp-4], edi
  140.         mov     DWORD PTR [rbp-8], esi
  141.         cmp     DWORD PTR [rbp-4], 1
  142.         jne     .L18
  143.         cmp     DWORD PTR [rbp-8], 65535
  144.         jne     .L18
  145.         mov     edi, OFFSET FLAT:_ZStL8__ioinit
  146.         call    std::ios_base::Init::Init() [complete object constructor]
  147.         mov     edx, OFFSET FLAT:__dso_handle
  148.         mov     esi, OFFSET FLAT:_ZStL8__ioinit
  149.         mov     edi, OFFSET FLAT:_ZNSt8ios_base4InitD1Ev
  150.         call    __cxa_atexit
  151. .L18:
  152.         nop
  153.         leave
  154.         ret
  155. _GLOBAL__sub_I_main:
  156.         push    rbp
  157.         mov     rbp, rsp
  158.         mov     esi, 65535
  159.         mov     edi, 1
  160.         call    __static_initialization_and_destruction_0(int, int)
  161.         pop     rbp
  162.         ret