Advertisement
Guest User

Untitled

a guest
Jun 10th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .section .data
  2. SYSCALL = 0x80
  3. A: .double 1.0
  4. B: .double 2.0
  5. k: .double 10.0
  6. fA: .double 2.0
  7. fB: .double 4.0
  8. var: .int 0
  9. precision: .int 0x200 # 0 - single, 0x200 - double, 0x300 - extended
  10. control_word: .int 0
  11. trash: .double 0.0
  12. format_f: .asciz "Wynik: %f\n"
  13.  
  14. .section .bss
  15. .comm buff, 80
  16.  
  17. .section .text
  18. .globl _start
  19. _start:
  20. nop
  21. #Kontrola precyzji
  22. mov $0, %ax
  23. fstcw control_word
  24. fwait
  25. mov control_word, %ax
  26. xor precision, %ax
  27. mov %ax, control_word
  28. fldcw control_word
  29.  
  30. #Liczenie pola - calka
  31. integral:
  32. call counting_step
  33. movsd %xmm0, %xmm1
  34. mov $0, %rsi
  35. movsd k, %xmm0
  36. movsd %xmm0, (%rsp)
  37. fldz
  38. faddl (%rsp)
  39. fist var
  40. fstp trash
  41. mov var, %ecx
  42. #petla sumujaca
  43. processing:
  44. push %rsi
  45. call counting_result
  46. movsd %xmm2, (%rsp)
  47. fldl (%rsp)
  48. movsd %xmm0, (%rsp)
  49. faddl (%rsp)
  50. fstpl  (%rsp)
  51. movsd  (%rsp), %xmm2
  52. inc %rsi
  53. cmp %ecx, %esi
  54. jge processing_end
  55. jmp processing
  56. #printf
  57. processing_end:
  58. movsd  %xmm2, %xmm0
  59. mov $1, %rax
  60. mov $format_f, %rdi
  61. call printf
  62. jmp end
  63.  
  64. end:
  65. mov $1, %rax
  66. mov $0, %rbx
  67. int $SYSCALL
  68.  
  69. #liczenie funkcji
  70. function:
  71. push %rbp
  72. mov %rsp, %rbp
  73. sub $8, %rsp
  74.  
  75. movsd %xmm0, (%rsp)
  76. fldl (%rsp)
  77. fmull fA
  78. faddl fB
  79.  
  80. fstpl   (%rsp)
  81. movsd   (%rsp), %xmm0
  82. mov     %rbp, %rsp
  83. pop     %rbp
  84. ret
  85. #Liczenie pojedynczej odleglosci
  86. counting_step:
  87. push %rbp      
  88. mov %rsp, %rbp        
  89. sub $8, %rsp  
  90.  
  91. fldz
  92. faddl B
  93. fsubl A
  94. fabs
  95. fdivl k
  96.  
  97. fstpl   (%rsp)
  98. movsd   (%rsp), %xmm0
  99. mov     %rbp, %rsp
  100. pop     %rbp
  101. ret
  102. #liczenie pola prostokata
  103. counting_result:
  104. push %rbp      
  105. mov %rsp, %rbp        
  106. sub $8, %rsp
  107.  
  108. mov 16(%rbp), %rdx
  109. fild 16(%rbp)
  110. movsd %xmm1, (%rsp)
  111. fldl (%rsp)
  112. fmul %st(1), %st(0)
  113. faddl A
  114. fstpl   (%rsp)
  115. movsd   (%rsp), %xmm0
  116. fstp trash
  117. call function
  118. movsd %xmm0, (%rsp)
  119. fldl (%rsp)
  120. movsd %xmm1, (%rsp)
  121. fmull (%rsp)
  122. fstpl   (%rsp)
  123. movsd   (%rsp), %xmm0
  124. mov     %rbp, %rsp
  125. pop     %rbp
  126. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement