Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .global classify
- classify:
- ldr r1, [r0]
- ldr r2, [r0, #4]
- push {r4-r7}
- mov r4, #1
- lsl r4, r4, #31 // s
- and r4, r4, r2
- lsr r4, r4, #31
- ldr r5, =2047
- lsl r5, r5, #20
- and r5, r5, r2 // e
- lsr r5, r5, #20
- ldr r7, =1048575
- and r6, r2, r7
- cmp r1, #0
- movne r6, #1 // m
- cmp r4, #0
- bne signed_classify
- unsigned_classify:
- cmp r5, #0
- bne unsigned_else
- cmp r6, #0
- moveq r0, #0 // PlusZero
- movne r0, #32 // PlusDenormal
- b exit_classify
- unsigned_else:
- ldr r7, =2047
- cmp r5, r7
- movne r0, #16 // PlusRegular
- bne exit_classify
- cmp r6, #0
- moveq r0, #240 // PlusInf
- movne r0, #48 // SignalingNaN
- b exit_classify
- signed_classify:
- cmp r5, #0
- bne signed_else
- cmp r6, #0
- moveq r0, #1 // MinusZero
- movne r0, #33 // MinusDenormal
- b exit_classify
- signed_else:
- ldr r7, =2047
- cmp r5, r7
- movne r0, #17 // MinusRegular
- bne exit_classify
- cmp r6, #0
- moveq r0, #241 // MinusInf
- movne r0, #49 // QuietNaN
- b exit_classify
- exit_classify:
- pop {r4-r7}
- bx lr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement