Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .section .data
- SYSCALL = 0x80
- A: .double 1.0
- B: .double 2.0
- k: .double 10.0
- fA: .double 2.0
- fB: .double 4.0
- var: .int 0
- precision: .int 0x200 # 0 - single, 0x200 - double, 0x300 - extended
- control_word: .int 0
- trash: .double 0.0
- format_f: .asciz "Wynik: %f\n"
- .section .bss
- .comm buff, 80
- .section .text
- .globl _start
- _start:
- nop
- #Kontrola precyzji
- mov $0, %ax
- fstcw control_word
- fwait
- mov control_word, %ax
- xor precision, %ax
- mov %ax, control_word
- fldcw control_word
- #Liczenie pola - calka
- integral:
- call counting_step
- movsd %xmm0, %xmm1
- mov $0, %rsi
- movsd k, %xmm0
- movsd %xmm0, (%rsp)
- fldz
- faddl (%rsp)
- fist var
- fstp trash
- mov var, %ecx
- #petla sumujaca
- processing:
- push %rsi
- call counting_result
- movsd %xmm2, (%rsp)
- fldl (%rsp)
- movsd %xmm0, (%rsp)
- faddl (%rsp)
- fstpl (%rsp)
- movsd (%rsp), %xmm2
- inc %rsi
- cmp %ecx, %esi
- jge processing_end
- jmp processing
- #printf
- processing_end:
- movsd %xmm2, %xmm0
- mov $1, %rax
- mov $format_f, %rdi
- call printf
- jmp end
- end:
- mov $1, %rax
- mov $0, %rbx
- int $SYSCALL
- #liczenie funkcji
- function:
- push %rbp
- mov %rsp, %rbp
- sub $8, %rsp
- movsd %xmm0, (%rsp)
- fldl (%rsp)
- fmull fA
- faddl fB
- fstpl (%rsp)
- movsd (%rsp), %xmm0
- mov %rbp, %rsp
- pop %rbp
- ret
- #Liczenie pojedynczej odleglosci
- counting_step:
- push %rbp
- mov %rsp, %rbp
- sub $8, %rsp
- fldz
- faddl B
- fsubl A
- fabs
- fdivl k
- fstpl (%rsp)
- movsd (%rsp), %xmm0
- mov %rbp, %rsp
- pop %rbp
- ret
- #liczenie pola prostokata
- counting_result:
- push %rbp
- mov %rsp, %rbp
- sub $8, %rsp
- mov 16(%rbp), %rdx
- fild 16(%rbp)
- movsd %xmm1, (%rsp)
- fldl (%rsp)
- fmul %st(1), %st(0)
- faddl A
- fstpl (%rsp)
- movsd (%rsp), %xmm0
- fstp trash
- call function
- movsd %xmm0, (%rsp)
- fldl (%rsp)
- movsd %xmm1, (%rsp)
- fmull (%rsp)
- fstpl (%rsp)
- movsd (%rsp), %xmm0
- mov %rbp, %rsp
- pop %rbp
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement