a1747ac916
floats and doubles to bytes is not fun. It might even work!
36 lines
474 B
ArmAsm
36 lines
474 B
ArmAsm
#
|
|
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
|
|
.sect .text
|
|
.define .c_ud_i
|
|
.c_ud_i:
|
|
/* Input: f0
|
|
* Output: r2
|
|
* Only at and f30/f31 may be used.
|
|
*/
|
|
|
|
ori at, zero, hi16[.fd_80000000]
|
|
ldc1 f30, lo16[.fd_80000000] (at)
|
|
c.le.d 0, f30, f0
|
|
bc1t toobig
|
|
nop
|
|
|
|
trunc.w.d f0, f0
|
|
mfc1 r2, f0
|
|
jr ra
|
|
nop
|
|
|
|
toobig:
|
|
sub.d f0, f0, f30
|
|
trunc.w.d f0, f0
|
|
mfc1 r2, f0
|
|
addiu r2, r2, 0x8000
|
|
jr ra
|
|
nop
|
|
|
|
.sect .rom
|
|
.define .fd_80000000
|
|
.fd_80000000:
|
|
.dataf8 2147483648.0
|
|
|