Advertisement
tobast

Untitled

Dec 27th, 2015
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .text
  2.     .globl  main
  3. main:
  4.     movq $8, %rdi
  5.     call sbrk
  6.     movq $D_Main, 0(%rax)
  7.     pushq %rax
  8.     pushq $0
  9.     movq 0(%rax), %rcx
  10.     addq $8, %rcx
  11.     call *0(%rcx)
  12.     popq %rax
  13.     popq %rax
  14.     xorq %rax, %rax
  15.     ret
  16. M0_Power_power:
  17.     pushq %rbp
  18.     movq %rsp, %rbp
  19.     movq $1, %rdi
  20.     subq $8, %rsp
  21.     movq %rdi, -8(%rbp)
  22.     movq $0, %rdi
  23.     movq %rbp, %rdx
  24.     addq $24, %rdx
  25.     movq 0(%rdx), %rdi
  26.     subq $8, %rsp
  27.     movq %rdi, -16(%rbp)
  28.     movq $0, %rdi
  29.     movq %rbp, %rdx
  30.     addq $16, %rdx
  31.     movq 0(%rdx), %rdi
  32.     subq $8, %rsp
  33.     movq %rdi, -24(%rbp)
  34.     movq $0, %rdi
  35. L0_whilewhile:
  36.     movq %rbp, %rdx
  37.     addq $-24, %rdx
  38.     movq 0(%rdx), %rdi
  39.     pushq %rdi
  40.     movq $0, %rdi
  41.     popq %rax
  42.     cmpq %rdi, %rax
  43.     seta %al
  44.     movzbq %al, %rdi
  45.     cmpq $0, %rdi
  46.     jz L0_whileend
  47.     movq %rbp, %rdx
  48.     addq $-24, %rdx
  49.     movq 0(%rdx), %rdi
  50.     pushq %rdi
  51.     movq $2, %rdi
  52.     popq %rax
  53.     movq $0, %rdx
  54.     idivq %rdi
  55.     movq %rdx, %rdi
  56.     pushq %rdi
  57.     movq $0, %rdi
  58.     popq %rax
  59.     cmpq %rdi, %rax
  60.     setne %al
  61.     movzbq %al, %rdi
  62.     cmpq $0, %rdi
  63.     jz L0_else
  64.     movq %rbp, %rdx
  65.     addq $-8, %rdx
  66.     movq 0(%rdx), %rdi
  67.     pushq %rdi
  68.     movq %rbp, %rdx
  69.     addq $-16, %rdx
  70.     movq 0(%rdx), %rdi
  71.     popq %rax
  72.     imulq %rax, %rdi
  73.     movq %rbp, %rdx
  74.     addq $-8, %rdx
  75.     movq %rdi, 0(%rdx)
  76.     movq $0, %rdi
  77.     jmp L0_end
  78. L0_else:
  79.     addq $0, %rsp
  80. L0_end:
  81.     movq %rbp, %rdx
  82.     addq $-16, %rdx
  83.     movq 0(%rdx), %rdi
  84.     pushq %rdi
  85.     movq %rbp, %rdx
  86.     addq $-16, %rdx
  87.     movq 0(%rdx), %rdi
  88.     popq %rax
  89.     imulq %rax, %rdi
  90.     movq %rbp, %rdx
  91.     addq $-16, %rdx
  92.     movq %rdi, 0(%rdx)
  93.     movq $0, %rdi
  94.     movq %rbp, %rdx
  95.     addq $-24, %rdx
  96.     movq 0(%rdx), %rdi
  97.     pushq %rdi
  98.     movq $2, %rdi
  99.     popq %rax
  100.     movq $0, %rdx
  101.     idivq %rdi
  102.     movq %rax, %rdi
  103.     movq %rbp, %rdx
  104.     addq $-24, %rdx
  105.     movq %rdi, 0(%rdx)
  106.     movq $0, %rdi
  107.     addq $0, %rsp
  108.     jmp L0_whilewhile
  109. L0_whileend:
  110.     movq $0, %rdi
  111.     movq %rbp, %rdx
  112.     addq $-8, %rdx
  113.     movq 0(%rdx), %rdi
  114.     addq $24, %rsp
  115.     popq %rbp
  116.     movq %rdi, %rax
  117.     ret
  118. M1_Main_main:
  119.     pushq %rbp
  120.     movq %rsp, %rbp
  121.     movq $8, %rdi
  122.     call sbrk
  123.     movq $D_Power, 0(%rax)
  124.     movq %rax, %rdi
  125.     subq $8, %rsp
  126.     movq %rdi, -8(%rbp)
  127.     movq $0, %rdi
  128.     movq %rbp, %rdx
  129.     addq $-8, %rdx
  130.     movq 0(%rdx), %rdi
  131.     movq 0(%rdi), %rdx
  132.     pushq %rdx
  133.     movq $2, %rdi
  134.     pushq %rdi
  135.     movq $4, %rdi
  136.     pushq %rdi
  137.     movq 16(%rsp), %rdx
  138.     movq 0(%rdx), %rdx
  139.     addq $8, %rdx
  140.     call *0(%rdx)
  141.     addq $24, %rsp
  142.     movq %rdi, %rsi
  143.     movq $0, %rax
  144.     movq $printfIntFormat, %rdi
  145.     call printf
  146.     movq $0, %rdi
  147.     movq $string0, %rdi
  148.     movq $0, %rax
  149.     call printf
  150.     movq $0, %rdi
  151.     movq %rbp, %rdx
  152.     addq $-8, %rdx
  153.     movq 0(%rdx), %rdi
  154.     movq 0(%rdi), %rdx
  155.     pushq %rdx
  156.     movq $6, %rdi
  157.     pushq %rdi
  158.     movq $3, %rdi
  159.     pushq %rdi
  160.     movq 16(%rsp), %rdx
  161.     movq 0(%rdx), %rdx
  162.     addq $8, %rdx
  163.     call *0(%rdx)
  164.     addq $24, %rsp
  165.     movq %rdi, %rsi
  166.     movq $0, %rax
  167.     movq $printfIntFormat, %rdi
  168.     call printf
  169.     movq $0, %rdi
  170.     movq $string1, %rdi
  171.     movq $0, %rax
  172.     call printf
  173.     movq $0, %rdi
  174.     addq $8, %rsp
  175.     popq %rbp
  176.     movq %rdi, %rax
  177.     ret
  178. .data
  179. printfIntFormat:
  180.     .string "%d"
  181. D_String:
  182.     .quad 0
  183.     .quad
  184. D_Power:
  185.     .quad 0
  186.     .quad M0_Power_power
  187. string0:
  188.     .string "\n"
  189. string1:
  190.     .string "\n"
  191. D_Main:
  192.     .quad 0
  193.     .quad M1_Main_main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement