📄 sincos.u
字号:
; ; ; ; ptr5!c_dcos5 call cc; ; ; ptr5; ; ; ; ptr5; ptr5!0x700+0xD4 ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!szero ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xD0 jeq sincos33; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dnop enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x700+0xD1 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!0x700+0xD5 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5;|* cc in C register ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; ; dnop tioe timsw halt; titoreg; rcsmsw ptr5;sincos33: ; ; ; ptr5; ptr5!c_dtrthresh1 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dcmp aluacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ; ptr5!dhalf jlt thresh22; dnop halt; ; ptr5; ; dnop halt; ; ptr5; ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!c_d3_8 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x700+0xD5 ; dnop enra srccalu clkcc loaddp halt;regtoti; rcsmsw ptr5; ; drsub alubcreg enra loaddp halt;regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!c_d5_8 ; dnop enra srccalu clkcc loaddp halt;regtoti; rcsmsw ptr5; ; dsub alubcreg enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x700+0xDA ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; call sincosend2; dnop tioe timsw halt; titoreg; rcsmsw ptr5;thresh22: ; dnop; ; ptr5; ptr5!c_dtrthresh2 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dcmp aluacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ; ptr5!dhalf jlt thresh33; dnop halt; ; ptr5; ; dnop halt; ; ptr5; ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!c_d3_16 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x700+0xD5 ; dnop enra srccalu clkcc loaddp halt;regtoti; rcsmsw ptr5; ; drsub alubcreg enra loaddp halt;regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!c_d13_16 ; dnop enra srccalu clkcc loaddp halt;regtoti; rcsmsw ptr5; ; dsub alubcreg enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x700+0xDA ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; call sincosend2; dnop tioe timsw halt; titoreg; rcsmsw ptr5;thresh33: ; dnop; ; ptr5; ptr5!dhalf ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!0x700+0xD5 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!done ; dnop enra srccalu clkcc loaddp halt;regtoti; rcsmsw ptr5; ; dsub alubcreg enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x700+0xDA ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; call sincosend2; dnop tioe timsw halt; titoreg; rcsmsw ptr5;sincosend2: ; ; ; ptr5; ptr5!0x700+0xD2 ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!c_sithree ; i2land enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!c_sizero|* Route output to input RA ; i2cmp enra tioe tisp halt; ; ptr5; ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!c_sione jeq quad0; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!c_sitwo jeq quad1; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xDA jeq quad2; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dneg enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr1; ; dnop tioe tilsw halt; titoreg; rcslsw ptr1; ; dnop tioe timsw halt; titoreg; rcsmsw ptr1; ptr5!0x700+0xDB ; ; regtotmp; rcsmsw ptr5; ; ; regtotmp; rcslsw ptr5; ; ; ; ptr4; ; ; tmptoreg; rcsmsw ptr4; call idle1; ; tmptoreg; rcslsw ptr4;quad2: ; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dneg enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr4; ; dnop tioe tilsw halt; titoreg; rcslsw ptr4; ; dnop tioe timsw halt; titoreg; rcsmsw ptr4; ptr5!0x700+0xDB ; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dneg enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr1; ; dnop tioe tilsw halt; titoreg; rcslsw ptr1; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;quad1: ; ; ; ptr5; ptr5!0x700+0xDB ; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dneg enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr4; ; dnop tioe tilsw halt; titoreg; rcslsw ptr4; ; dnop tioe timsw halt; titoreg; rcsmsw ptr4; ptr5!0x700+0xDA ; ; regtotmp; rcsmsw ptr5; ; ; regtotmp; rcslsw ptr5; ; ; ; ptr1; ; ; tmptoreg; rcsmsw ptr1; call idle1; ; tmptoreg; rcslsw ptr1;quad0: ; ; ; ptr5; ptr5!0x700+0xDB ; ; regtotmp; rcsmsw ptr5; ; ; regtotmp; rcslsw ptr5; ; ; ; ptr1; ; ; tmptoreg; rcsmsw ptr1; ; ; tmptoreg; rcslsw ptr1; ptr5!0x700+0xDA ; ; regtotmp; rcsmsw ptr5; ; ; regtotmp; rcslsw ptr5; ; ; ; ptr4; ; ; tmptoreg; rcsmsw ptr4; call idle1; ; tmptoreg; rcslsw ptr4;ckmode:|* Make sure rounding mode is the default: 2.|* The current rounding mode is stored at 0x700+0xF3|* The correct rounding mode is stored at 0x700+0xF2|* Do a single precision compare of both values and if they're|* not equal, goto hang ; ; ; rcssp ptr5; ptr5!0x700+0xF3 ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; rcssp ptr5; ptr5!0x700+0xF2 ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ; jne hang cstat; halt; ; ; ; halt; ; ; rtn; ; ; ptr2;|* Routine DP.ARGRED to reduce huge arguments for DP sin/cos/sincos|* Variables and registers used:|* |* 0x700 + 0xE0 ... 0xE7: q[0], q[1],... q[7]|* 0x700 + 0xE8 ... 0xEF: fv[0], fv[1],... fv[7]|* |* 0x700+0xDC: abs(x)|* 0x700+0xDD: int k|* 0x700+0xDE: z|* |* 0x500+0xE0: x1|* 0x500+0xE1: x2|* 0x500+0xE2: x3|* 0x500+0xE3: t|* 0x500+0xE4: t1|* 0x500+0xE5: t2|* 0x500+0xE6: t3|* 0x500+0xE7: p3|* 0x500+0xE8: y|* 0x500+0xEA: fvm1|* 0x500+0xEB: fvm2|* 0x500+0xEC: q1|* 0x500+0xED: q2|* 0x500+0xEE: q3|* 0x500+0xEF: int mm|* |* dpargred:|* First, get ILOGB(abs(x)) ; tioe tilsw halt; titoreg; rcslsw ptr5; ; ; ; ptr5; ptr5!c_si20 ; i2sftrl enrb halt; regtoti; rcssp ptr5; ; ; ; ; ; i2cmp enra tioe tisp halt; ; ptr5; ptr5!c_sibias ; i2sub enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xD2 ; i2cmp enra tioe tisp halt; titoreg; rcssp ptr5; ; ; ; ptr5; ptr5!c_si38 ; i2sub enrb halt; regtoti; rcssp ptr5; ; ; ; ; ; i2cmp enra tioe tisp halt; ; ptr5; ptr5!c_si24 ; idiv enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xDC ; ; regtotmp; rcsmsw ptr5; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; halt; ; ptr5; ptr5!0x700+0xDD ; i2cmp enra tioe tisp halt; titoreg; rcssp ptr5; ; ; ; ptr5; ptr5!szero ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!c_si24 jle setkto0; imul enrb halt; regtoti; rcssp ptr5;|* else x = scalbn(x , -24*k) ; ; ; ;doscalbn: ; i2cmp enra tioe tisp halt; ; ptr5; ptr5!c_si20 ; i2sftll enrb halt; regtoti; rcssp ptr5; ; ; ; ; ; i2cmp enrb tioe tisp halt; ; ptr5; ptr5!0x700+0xDC ; i2sub enra halt; regtoti; rcsmsw ptr5; ; i2sub; ; ; ; tioe tisp halt; titotmp; rcsmsw ptr5; ; tioe tisp halt; titoreg; rcsmsw ptr5;|* get py[n1] &= 0xffffffe0|*startpyn: ; ; ; ptr5; ptr5!c_simskar0 ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xDC ; i2land enrb halt; regtoti; rcslsw ptr5; ; ; ; ptr5; ptr5!0x500+0xE2 ; i2cmp enra tioe tisp halt; titoreg; rcslsw ptr5; ; ; tmptoreg; rcsmsw ptr5; ; ; ; ptr5; ptr5!c_simskar1 ; i2land enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x500+0xE0 ; tioe tisp halt; titoreg; rcslsw ptr5; ; ; tmptoreg; rcsmsw ptr5; ; ; ; ptr5; ptr5!0x500+0xE2 ; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dnop enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x500+0xE0 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dsub enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x500+0xE1 ; dnop tioe timsw halt; titoreg; rcsmsw ptr5; ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x700+0xDC ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x500+0xE2 ; dnop tioe timsw halt; titoreg; rcsmsw ptr5; ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; ; dnop; ; ptr5; ptr5!c_sione ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xDD ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x500+0x6F jlt noadjust; i2add halt; ; ;|* The following loop is to get pr[k-1]|* set K = (k-1) + 2 = k + 1|* set ptr5 to base of pr - 1; loop: incr ptr5, decr RA (K),compare to 1, if not equal, loop ; ; ; ; ; i2cmp enra tioe tisp halt; ; ;argloop1: ; i2sub halt; ; ; ; ; ; ; ptr5+ ; i2cmp enra tioe tisp halt; ; ; ; ; ; ; jne argloop1; halt; ; ; ; ; ; ptr5; ; dfloat enra loaddp halt; regtoti; rcssp ptr5; ; dfloat enra loaddp halt; regtoti; rcssp ptr5; ; dnop; ; ptr5; ptr5!0x500+0xEA ; dnop tioe timsw halt; titoreg; rcsmsw ptr5; ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; ; ; ; ptr5; ptr5!0x700+0xDD ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!c_sione ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ; jle noadjust; halt; ; ;|* get fvm2 ; ; ; ptr5; ptr5!0x500+0x6Fargloop2: ; i2sub halt; ; ; ; ; ; ; ptr5+ ; i2cmp enra tioe tisp halt; ; ; ; ; ; ; jne argloop2; halt; ; ; ; ; ; ptr5; ; dfloat enra loaddp halt; regtoti; rcssp ptr5; ; dfloat enra loaddp halt; regtoti; rcssp ptr5; ; dnop; ; ; ; dnop enra tioe timsw loaddp halt;; ; ; dnop enra tioe tilsw loaddp halt;; ptr5; ptr5!c_dtwo24 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ; ; dnop; ; ptr5; ptr5!0x500+0xEB ; dnop tioe timsw halt; titoreg; rcsmsw ptr5; ; dnop tioe tilsw halt; titoreg; rcslsw ptr5;noadjust:|* get fv[0] ; ; ; ptr5; ptr5!c_sitwo ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xDD ; i2add enra halt; regtoti; rcssp ptr5; ; ; ; ; ; i2cmp enra tioe tisp halt; ; ptr5; ptr5!c_sione ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x500+0x6Fargloop3: ; i2sub halt; ; ; ; ; ; ; ptr5+ ; i2cmp enra tioe tisp halt; ; ; ; ; ; ; jne argloop3; halt; ; ; ; ; ; ptr5; ; dfloat enra loaddp halt; regtoti; rcssp ptr5; ; dfloat enra loaddp halt; regtoti; rcssp ptr5; ; dnop; ; ; ; dnop enra tioe timsw loaddp halt;; ; ; dnop enra tioe tilsw loaddp halt;; ptr5; ptr5!c_dtwon24 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ; ; dnop; ; ptr5; ptr5!0x700+0xE8 ; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -