Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- good: .string "Brak wyjatkow\n"
- prohibited: .string "Niedozwolone dzialanie\n"
- denormalized: .string "Operand zdenormalizowany\n"
- zeroDivide: .string "Dzielenie przez zero\n"
- overflow: .string "Nadmiar\n"
- underflow: .string "Niedomiar\n"
- precision: .string "Blad precyzji\n"
- status: .int 120
- zmienna: .float 2.0
- .text
- .globl throwException
- .type throwException @function
- throwException:
- push %ebp
- mov %esp, %ebp
- finit
- #Pierwiastek z liczby ujemnej
- fld1
- fchs
- fsqrt
- #Operand zdenormalizowany
- pushl $0x00001
- fld (%esp)
- fldz
- faddp
- #Dzielenie przez zero
- fld1
- fldz
- fdivrp
- mov %ebp, %esp
- pop %ebp
- ret
- .globl showException
- .type showException @function
- showException:
- push %ebp
- mov %esp, %ebp
- xorl %edi, %edi
- fstsw status
- mov status, %edi
- test $0, %edi
- jz prohibited_e
- pushl $good
- call printf
- jmp ret
- prohibited_e:
- test $1, %edi
- jz denormalized_e
- pushl $prohibited
- call printf
- denormalized_e:
- test $2, %edi
- jz zeroDivide_e
- pushl $denormalized
- call printf
- zeroDivide_e:
- test $4, %edi
- jz overflow_e
- pushl $zeroDivide
- call printf
- overflow_e:
- test $8, %edi
- jz underflow_e
- pushl $overflow
- call printf
- underflow_e:
- test $16, %edi
- jz precision_e
- pushl $underflow
- call printf
- precision_e:
- test $32, %edi
- jz ret
- pushl $precision
- call printf
- ret:
- mov %ebp, %esp
- pop %ebp
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement