Advertisement
Guest User

chad c asm output

a guest
Mar 13th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 3.61 KB | None | 0 0
  1.     .file   "Ex1-24.c"
  2.     .text
  3.     .p2align 4,,15
  4.     .globl  get_lines
  5.     .def    get_lines;  .scl    2;  .type   32; .endef
  6.     .seh_proc   get_lines
  7. get_lines:
  8.     pushq   %rdi
  9.     .seh_pushreg    %rdi
  10.     pushq   %rsi
  11.     .seh_pushreg    %rsi
  12.     pushq   %rbx
  13.     .seh_pushreg    %rbx
  14.     subq    $32, %rsp
  15.     .seh_stackalloc 32
  16.     .seh_endprologue
  17.     cmpl    $1, %edx
  18.     jle .L6
  19.     movq    %rcx, %rbx
  20.     leal    -1(%rdx), %edi
  21.     xorl    %esi, %esi
  22.     jmp .L3
  23.     .p2align 4,,10
  24. .L12:
  25.     addq    $1, %rbx
  26.     addl    $1, %esi
  27.     cmpl    $10, %eax
  28.     movq    %rbx, %rcx
  29.     je  .L11
  30.     cmpl    %esi, %edi
  31.     movb    %al, (%r8)
  32.     je  .L2
  33. .L3:
  34.     call    getchar
  35.     cmpl    $-1, %eax
  36.     movq    %rbx, %r8
  37.     jne .L12
  38.     movq    %rbx, %rcx
  39. .L2:
  40.     movl    %esi, %eax
  41.     movb    $0, (%rcx)
  42.     addq    $32, %rsp
  43.     popq    %rbx
  44.     popq    %rsi
  45.     popq    %rdi
  46.     ret
  47.     .p2align 4,,10
  48. .L11:
  49.     movl    %esi, %eax
  50.     movb    $10, (%r8)
  51.     movb    $0, (%rcx)
  52.     addq    $32, %rsp
  53.     popq    %rbx
  54.     popq    %rsi
  55.     popq    %rdi
  56.     ret
  57. .L6:
  58.     xorl    %esi, %esi
  59.     jmp .L2
  60.     .seh_endproc
  61.     .def    __main; .scl    2;  .type   32; .endef
  62.     .section .rdata,"dr"
  63. .LC0:
  64.     .ascii "Errors in program:\0"
  65.     .align 8
  66. .LC1:
  67.     .ascii "Unbalanced single quotes detected.\0"
  68.     .align 8
  69. .LC2:
  70.     .ascii "Unbalanced double quotes detected.\0"
  71. .LC3:
  72.     .ascii "Unbalanced braces: %7d\12\0"
  73. .LC4:
  74.     .ascii "Unbalanced Parentheses: %2d\12\0"
  75. .LC5:
  76.     .ascii "Unbalanced brackets: %5d\12\0"
  77.     .section    .text.startup,"x"
  78.     .p2align 4,,15
  79.     .globl  main
  80.     .def    main;   .scl    2;  .type   32; .endef
  81.     .seh_proc   main
  82. main:
  83.     pushq   %r14
  84.     .seh_pushreg    %r14
  85.     pushq   %r13
  86.     .seh_pushreg    %r13
  87.     pushq   %r12
  88.     .seh_pushreg    %r12
  89.     pushq   %rbp
  90.     .seh_pushreg    %rbp
  91.     pushq   %rdi
  92.     .seh_pushreg    %rdi
  93.     pushq   %rsi
  94.     .seh_pushreg    %rsi
  95.     pushq   %rbx
  96.     .seh_pushreg    %rbx
  97.     subq    $1056, %rsp
  98.     .seh_stackalloc 1056
  99.     .seh_endprologue
  100.     xorl    %edi, %edi
  101.     xorl    %ebp, %ebp
  102.     xorl    %r14d, %r14d
  103.     leaq    32(%rsp), %rsi
  104.     xorl    %ebx, %ebx
  105.     xorl    %r13d, %r13d
  106.     call    __main
  107.     leaq    1(%rsi), %r12
  108.     .p2align 4,,10
  109. .L14:
  110.     movl    $1024, %edx
  111.     movq    %rsi, %rcx
  112.     call    get_lines
  113.     testl   %eax, %eax
  114.     jle .L37
  115.     leal    -1(%rax), %r8d
  116.     movq    %rsi, %rcx
  117.     addq    %r12, %r8
  118.     jmp .L26
  119.     .p2align 4,,10
  120. .L17:
  121.     cmpb    $93, %al
  122.     je  .L21
  123.     jle .L38
  124.     cmpb    $123, %al
  125.     je  .L24
  126.     cmpb    $125, %al
  127.     sete    %al
  128.     movzbl  %al, %eax
  129.     subl    %eax, %r14d
  130.     .p2align 4,,10
  131. .L15:
  132.     addq    $1, %rcx
  133.     cmpq    %r8, %rcx
  134.     je  .L14
  135. .L26:
  136.     movzbl  (%rcx), %eax
  137.     cmpb    $41, %al
  138.     je  .L16
  139.     jg  .L17
  140.     cmpb    $39, %al
  141.     je  .L18
  142.     jg  .L19
  143.     cmpb    $34, %al
  144.     sete    %al
  145.     movzbl  %al, %eax
  146.     addl    %eax, %edi
  147.     jmp .L15
  148.     .p2align 4,,10
  149. .L38:
  150.     cmpb    $91, %al
  151.     sete    %al
  152.     movzbl  %al, %eax
  153.     addl    %eax, %r13d
  154.     jmp .L15
  155.     .p2align 4,,10
  156. .L16:
  157.     subl    $1, %ebx
  158.     jmp .L15
  159.     .p2align 4,,10
  160. .L21:
  161.     subl    $1, %r13d
  162.     jmp .L15
  163.     .p2align 4,,10
  164. .L24:
  165.     addl    $1, %r14d
  166.     jmp .L15
  167.     .p2align 4,,10
  168. .L19:
  169.     addl    $1, %ebx
  170.     jmp .L15
  171.     .p2align 4,,10
  172. .L18:
  173.     addl    $1, %ebp
  174.     jmp .L15
  175.     .p2align 4,,10
  176. .L37:
  177.     movl    %r14d, %eax
  178.     leaq    .LC0(%rip), %rcx
  179.     sarl    $31, %eax
  180.     xorl    %eax, %r14d
  181.     subl    %eax, %r14d
  182.     movl    %ebx, %eax
  183.     sarl    $31, %eax
  184.     xorl    %eax, %ebx
  185.     subl    %eax, %ebx
  186.     movl    %r13d, %eax
  187.     sarl    $31, %eax
  188.     xorl    %eax, %r13d
  189.     subl    %eax, %r13d
  190.     call    puts
  191.     andl    $1, %ebp
  192.     je  .L39
  193. .L28:
  194.     andl    $1, %edi
  195.     jne .L29
  196.     leaq    .LC2(%rip), %rcx
  197.     call    puts
  198. .L29:
  199.     leaq    .LC3(%rip), %rcx
  200.     movl    %r14d, %edx
  201.     call    printf
  202.     leaq    .LC4(%rip), %rcx
  203.     movl    %ebx, %edx
  204.     call    printf
  205.     leaq    .LC5(%rip), %rcx
  206.     movl    %r13d, %edx
  207.     call    printf
  208.     xorl    %eax, %eax
  209.     addq    $1056, %rsp
  210.     popq    %rbx
  211.     popq    %rsi
  212.     popq    %rdi
  213.     popq    %rbp
  214.     popq    %r12
  215.     popq    %r13
  216.     popq    %r14
  217.     ret
  218. .L39:
  219.     leaq    .LC1(%rip), %rcx
  220.     call    puts
  221.     jmp .L28
  222.     .seh_endproc
  223.     .ident  "GCC: (Rev1, Built by MSYS2 project) 7.2.0"
  224.     .def    getchar;    .scl    2;  .type   32; .endef
  225.     .def    puts;   .scl    2;  .type   32; .endef
  226.     .def    printf; .scl    2;  .type   32; .endef
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement