Advertisement
_takumi

skmain.asm

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