Advertisement
_takumi

skmain

Nov 27th, 2022 (edited)
1,552
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .intel_syntax noprefix
  2.     .section    .rodata
  3. .LC4:
  4.     .string "-c"
  5. .LC5:
  6.     .string "%lf %lf"
  7. .LC6:
  8.     .string "%lf\n"
  9. .LC8:
  10.     .string "Program execution time: %lf\n"
  11. .LC9:
  12.     .string "-f"
  13. .LC10:
  14.     .string "r"
  15. .LC11:
  16.     .string "w"
  17.     .align 8
  18. .LC12:
  19.     .string "Please enter one of the following keys: -f, -c"
  20.     .text
  21.     .globl  main
  22.     .type   main, @function
  23. main:
  24.     push    rbp
  25.     mov rbp, rsp
  26.     add rsp, -128
  27.     mov DWORD PTR -116[rbp], edi  # argc
  28.     mov QWORD PTR -128[rbp], rsi  # argv
  29.     xor eax, eax
  30.     movsd   xmm0, QWORD PTR .LC3[rip]
  31.     movsd   QWORD PTR -88[rbp], xmm0
  32.     mov rax, QWORD PTR -128[rbp]
  33.     add rax, 8
  34.     mov rax, QWORD PTR [rax]
  35.     lea rsi, .LC4[rip]       # arg2 - "-c"
  36.     mov rdi, rax             # arg1 - argv[1]
  37.     call    strcmp@PLT
  38.     test    eax, eax
  39.     jne .L12
  40.     lea rdx, -96[rbp]   # arg3 - &b
  41.     lea rax, -104[rbp]
  42.     mov rsi, rax        # arg2 - &a
  43.     lea rdi, .LC5[rip]  # arg1 - "%lf %lf"
  44.     mov eax, 0
  45.     call    __isoc99_scanf@PLT
  46.     call    clock@PLT
  47.     mov QWORD PTR -32[rbp], rax
  48.     movsd   xmm0, QWORD PTR -96[rbp]
  49.     mov rax, QWORD PTR -104[rbp]
  50.     movsd   xmm1, QWORD PTR -88[rbp]
  51.     movapd  xmm2, xmm1  # arg3 - eps
  52.     movapd  xmm1, xmm0  # arg2 - b
  53.     movq    xmm0, rax   # arg1 - a
  54.     call    solve      
  55.     movq    rax, xmm0
  56.     mov QWORD PTR -56[rbp], rax
  57.     call    clock@PLT
  58.     mov QWORD PTR -24[rbp], rax
  59.     mov rax, QWORD PTR -56[rbp]
  60.     movq    xmm0, rax       # arg2 - res
  61.     lea rdi, .LC6[rip]  # arg1 - "%lf\n"
  62.     mov eax, 1
  63.     call    printf@PLT
  64.     mov rax, QWORD PTR -24[rbp]
  65.     sub rax, QWORD PTR -32[rbp]
  66.     cvtsi2sd    xmm0, rax
  67.     movsd   xmm1, QWORD PTR .LC7[rip]
  68.     divsd   xmm0, xmm1
  69.     movsd   QWORD PTR -16[rbp], xmm0
  70.     mov rax, QWORD PTR -16[rbp]
  71.     movq    xmm0, rax       # arg2 - time_spent
  72.     lea rdi, .LC8[rip]  # arg1 - "Program execution time: %lf\n"
  73.     mov eax, 1
  74.     call    printf@PLT
  75.     jmp .L13
  76. .L12:
  77.     mov rax, QWORD PTR -128[rbp]
  78.     add rax, 8
  79.     mov rax, QWORD PTR [rax]
  80.     lea rsi, .LC9[rip] # arg2 - "-f"
  81.     mov rdi, rax       # arg1 - argv[1]
  82.     call    strcmp@PLT
  83.     test    eax, eax
  84.     jne .L14
  85.     mov rax, QWORD PTR -128[rbp]
  86.     add rax, 16
  87.     mov rax, QWORD PTR [rax]
  88.     lea rsi, .LC10[rip]       # arg2 - "r"
  89.     mov rdi, rax              # arg1 - argv[2]
  90.     call    fopen@PLT
  91.     mov QWORD PTR -80[rbp], rax
  92.     mov rax, QWORD PTR -128[rbp]
  93.     add rax, 24
  94.     mov rax, QWORD PTR [rax]
  95.     lea rsi, .LC11[rip]  # arg2 - "w"
  96.     mov rdi, rax         # arg1 - argv[3]
  97.     call    fopen@PLT
  98.     mov QWORD PTR -72[rbp], rax
  99.     lea rcx, -96[rbp]           # arg4 - &b
  100.     lea rdx, -104[rbp]          # arg3 - &a
  101.     mov rax, QWORD PTR -80[rbp]
  102.     lea rsi, .LC5[rip]          # arg2 - "%lf %lf"
  103.     mov rdi, rax                # arg1 - input
  104.     mov eax, 0
  105.     call    __isoc99_fscanf@PLT
  106.     call    clock@PLT
  107.     mov QWORD PTR -64[rbp], rax
  108.     movsd   xmm0, QWORD PTR -96[rbp]
  109.     mov rax, QWORD PTR -104[rbp]
  110.     movsd   xmm1, QWORD PTR -88[rbp]
  111.     movapd  xmm2, xmm1  # arg3 - eps
  112.     movapd  xmm1, xmm0  # arg2 - b
  113.     movq    xmm0, rax   # arg1 - a
  114.     call    solve
  115.     movq    rax, xmm0
  116.     mov QWORD PTR -56[rbp], rax
  117.     call    clock@PLT
  118.     mov QWORD PTR -48[rbp], rax
  119.     mov rdx, QWORD PTR -56[rbp]
  120.     mov rax, QWORD PTR -72[rbp]
  121.     movq    xmm0, rdx      # arg3 - res
  122.     lea rsi, .LC6[rip] # arg2 - "%lf\n"
  123.     mov rdi, rax       # arg1 - output
  124.     mov eax, 1
  125.     call    fprintf@PLT
  126.     mov rax, QWORD PTR -48[rbp]
  127.     sub rax, QWORD PTR -64[rbp]
  128.     cvtsi2sd    xmm0, rax
  129.     movsd   xmm1, QWORD PTR .LC7[rip]
  130.     divsd   xmm0, xmm1
  131.     movsd   QWORD PTR -40[rbp], xmm0
  132.     mov rax, QWORD PTR -40[rbp]
  133.     movq    xmm0, rax       # arg2 - time_spent
  134.     lea rdi, .LC8[rip]  # arg1 - "Program execution time: %lf\n"
  135.     mov eax, 1
  136.     call    printf@PLT
  137.     mov rax, QWORD PTR -80[rbp]
  138.     mov rdi, rax    # arg1 - input
  139.     call    fclose@PLT
  140.     mov rax, QWORD PTR -72[rbp]
  141.     mov rdi, rax    # arg1 - output
  142.     call    fclose@PLT
  143.     jmp .L13
  144. .L14:
  145.     lea rdi, .LC12[rip] # arg1 - "Please enter one of the following keys: -f, -c\n"
  146.     call    puts@PLT
  147. .L13:
  148.     mov eax, 0
  149.     leave
  150.     ret
  151.     .size   main, .-main
  152.     .section    .rodata
  153.     .align 8
  154. .LC0:
  155.     .long   0
  156.     .long   1072693248
  157.     .align 8
  158. .LC1:
  159.     .long   0
  160.     .long   1073741824
  161.     .align 8
  162. .LC3:
  163.     .long   2696277389
  164.     .long   1051772663
  165.     .align 8
  166. .LC7:
  167.     .long   0
  168.     .long   1093567616
  169.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement