📄 sincos.u
字号:
|* @(#)sincos.u 1.1 92/07/30 Copyright Sun Microsystems, Inc. 1988, 1989|* |* Double precisioin Sin, Cos, SinCos.|* lpreg is 0 for cos, 1 for sin, 2 for sincos|* routine xd.sin 001000000001 ; ; ; ; ; ; rcssp ptr5; ptr5!0x700+0xF3 ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; rcssp ptr5; ptr5!0x700+0xF2 ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr2; lpreg!1 jne hang cstat; dnop enra loaddp halt; regtitmp; rcsmsw ptr2; ; dabs enra loaddp halt; regtitmp; rcslsw ptr2; call dtrig; dnop; ; ; routine xd.cos 001000000011 ; ; ; ; ; ; rcssp ptr5; ptr5!0x700+0xF3 ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; rcssp ptr5; ptr5!0x700+0xF2 ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr2; lpreg!0 jne hang cstat; dnop enra loaddp halt; regtitmp; rcsmsw ptr2; ; dabs enra loaddp halt; regtitmp; rcslsw ptr2; call dtrig; dnop; ; ; routine xd.sincos 001001100001 ; ; ; ; ; ; rcssp ptr5; ptr5!0x700+0xF3 ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; rcssp ptr5; ptr5!0x700+0xF2 ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr2; lpreg!2 jne hang cstat; dnop enra loaddp halt; regtitmp; rcsmsw ptr2; ; dabs enra loaddp halt; regtitmp; rcslsw ptr2; call dtrig; dnop; ; ; dtrig: call dnotfinxs; i2cmp enra srccalu clkcc tioe timsw halt;; ;goforit: ; dnop; ; ptr5; ptr5!c_dtrtiny jge tmore2246; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dcmp aluacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!c_dzero85 jlt tlesstiny; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dcmp aluacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr2; jlt tless085; dnop enra enrb loaddp halt; regtitmp; rcsmsw ptr2; ; dmul enra enrb loaddp halt; regtitmp; rcslsw ptr2; ; dmul; ; ptr5; ptr5!c_dsin1 jloop0 dcosgt085; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulbmul enra srccmul clkcc loaddp halt;regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!c_dsin0 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; lpreg- ; dadd aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ; ; dnop enra tioe timsw loaddp halt; ; ; ; dnop enra tioe tilsw loaddp halt; ; ; ; dnop enrb loaddp halt; regtoti; rcsmsw ptr2; ; dmul enrb loaddp halt; regtoti; rcslsw ptr2; ; dmul; ; ; ; dnop halt; ; ; ; dmul mulacreg mulbmul halt; ; ; ; dmul; ; ; ; dnop halt; ; ; jloop0 dsingt085; drsub aluamul alubrb halt; ; ; ; dnop; ; ptr1;|* Sincos from here on: jtierr der1; dnop tioe tilsw halt; titoreg; rcslsw ptr1; ; dnop tioe timsw halt; titoreg; rcsmsw ptr1; ; dnop; ; ptr5; ptr5!c_dcos0 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!dhalf ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ; ; dnop enra tioe timsw loaddp halt; ; ; ; dmul mulbcreg enra tioe tilsw loaddp halt; ; ; ; dmul; ; ptr5; ptr5!done ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr4; ; dnop tioe tilsw halt; titoreg; rcslsw ptr4; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr4;dsingt085: jtierr der1; dnop tioe tilsw halt; titoreg; rcslsw ptr1; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1; dcosgt085: ; dnop; ; ptr5; ptr5!c_dcos0 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul mulacreg; ; ptr5; ptr5!dhalf ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ; ; dnop enra tioe timsw loaddp halt;; ; ; dmul mulbcreg enra tioe tilsw loaddp halt;; ; ; dmul; ; ptr5; ptr5!done ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr1; jtierr der1; dnop tioe tilsw halt; titoreg; rcslsw ptr1; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;tless085: ; dmul; ; ptr5; ptr5!c_dsin0 jloop0 dcoslt085; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulara enrb srccmul clkcc loaddp halt;regtoti;rcslsw ptr5; lpreg- ; dmul; ; ptr2; ; dnop enrb loaddp halt; regtoti; rcsmsw ptr2; ; dmul mulacreg mulbmul enrb loaddp halt;regtoti; rcslsw ptr2; ; dmul; ; ptr4; ; dnop halt; regtotmp; rcslsw ptr4; jloop0 dsinlt085; drsub aluamul alubrb halt; ; ; ; dnop; ; ptr1; jtierr der1; dnop tioe tilsw halt; titoreg; rcslsw ptr1; ; dnop tioe timsw halt; titoreg; rcsmsw ptr1; lpreg- ; dnop; ; ptr5; ptr5!dhalf ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!done ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr4; jtierr der4; dnop tioe tilsw halt; titoreg; rcslsw ptr4; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr4;dsinlt085: jtierr der1; dnop tioe tilsw halt; titoreg; rcslsw ptr1; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;dcoslt085: ; dnop; ; ptr5; ptr5!dhalf ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!done ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr1; jtierr der1; dnop tioe tilsw halt; titoreg; rcslsw ptr1; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;tlesstiny: jloop0 dcostiny; dnop; ; ptr1; ; ; tmptoreg; rcslsw ptr1; lpreg- jloop0 idle1; ; tmptoreg; rcsmsw ptr1;|* If sin , return x ; ; ; ptr5; ptr5!done ; ; ; ptr4; ; ; regtotmp; rcslsw ptr4; ; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dabs enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr4; jtierr der4; dnop tioe tilsw halt; titoreg; rcslsw ptr4; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr4;dcostiny: ; ; ; ptr5; ptr5!done ; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dabs enra loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr1; jtierr der1; dnop tioe tilsw halt; titoreg; rcslsw ptr1; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;tmore2246: ; ; ; ptr5; ptr5!szero ; ; regtotmp; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xD4|* store j = 0 ; ; tmptoreg; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xD2|* store n = 0 ; ; tmptoreg; rcssp ptr5; ; ; regtotmp; rcsmsw ptr2; ; ; regtotmp; rcslsw ptr2; ; ; ; ptr5; ptr5!0x700+0xD0|* store y1 = x ; ; tmptoreg; rcsmsw ptr5; ; ; tmptoreg; rcslsw ptr5;|* Compare abs(x) to pio4 ; ; ; ptr5; ptr5!c_dpio4 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dcmp aluacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!c_dpio2 jle tlepio4; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dnop aluacreg enrb loaddp halt; regtoti; rcslsw ptr5;|* store j = 1 ; dnop halt; ; ptr5; ptr5!sone ; dnop halt; regtotmp; rcssp ptr5; ; dnop halt; ; ptr5; ptr5!0x700+0xD4 ; dcmp aluacreg alubrb halt; tmptoreg; rcssp ptr5; ; dnop; ; ptr5; ptr5!c_dtrmedium jle tlepio2; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dcmp aluacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ; jle tlemed; dnop enra loaddp halt; regtoti; rcsmsw ptr2; ; dabs enra loaddp halt; regtoti; rcslsw ptr2; ; dnop; ; ptr5; ptr5!0x700+0xDC call dpargred; i2cmp enra tioe timsw halt; titoreg; rcsmsw ptr5;|* dpargred call scfinal at the end :-)tlemed: ; ; ; ptr5; ptr5!c_dinvpio2 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul mulacreg; ; ; ; dnop; ; ; ; dnop enra tioe timsw loaddp halt;; ; ; dcvtint enra tioe tilsw loaddp halt;; ; ; dcvtint; ; ptr5; ptr5!0x700+0xD2 ; dfloat enra tioe tisp halt; titoreg; rcssp ptr5; ; dfloat enra tioe tisp halt; ; ; ; dnop; ; ptr5; ptr5!0x700+0xD3 ; dnop enra tioe timsw loaddp halt;titoreg; rcsmsw ptr5; ; dnop enra tioe tilsw loaddp halt;titoreg; rcslsw ptr5; ; dnop; ; ptr5; ptr5!c_dpio2_1 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!c_dpio2_2 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub aluamul alubcreg enrb loaddp halt;regtoti;rcslsw ptr5; ; dnop; ; ;|* abs(x) will no longer be in C reg. z = (t - n*pio2_1) is. ; dmul srccalu clkcc tioe tilsw halt; ; ; ; dmul srccalu clkcc tioe timsw halt; ; ; ; dmul; ; ; ; dnop; ; ;|* Tioutput -- RA ('w') ; dnop enra tioe timsw loaddp halt;; ; ; drsub alubcreg enra tioe tilsw loaddp halt;; ptr5; ptr5!0x700+0xD0 ; dnop; ; ptr5; ; dnop enrb tioe timsw loaddp halt; titoreg; rcsmsw ptr5; ; dsub aluacreg enrb tioe tilsw loaddp halt;titoreg; rcslsw ptr5; ; dnop; ; ; ; dnop enrb tioe timsw loaddp halt;; ; ; drsub enrb tioe tilsw loaddp halt;; ; ; dnop; ; ptr5; ptr5!0x700+0xD1 ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; call cksign; dnop tioe timsw halt; titoreg; rcsmsw ptr5; call scfinal; ; ; ;tlepio2: ; ; ; ptr5; ptr5!c_sione ; ; regtotmp; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xD2 ; ; tmptoreg; rcssp ptr5; ; ; ; ptr5; ptr5!c_dpio2_1 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dsub aluacreg enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!c_dpio2_2 ; dnop enra srccalu clkcc loaddp halt;regtoti; rcsmsw ptr5; ; drsub alubcreg enra loaddp halt;regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x700+0xD0 ; dnop enrb tioe timsw loaddp halt;titoreg; rcsmsw ptr5; ; dsub aluacreg enrb tioe tilsw loaddp halt;titoreg;rcslsw ptr5; ; dnop; ; ; ; dnop enrb tioe timsw loaddp halt;; ; ; drsub aluara enrb tioe tilsw loaddp halt;; ptr5; ptr5!0x700+0xD1 ; dnop; ; ; ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; call cksign; dnop tioe timsw halt; titoreg; rcsmsw ptr5; call scfinal; dnop; ; ;|* y1 = x: D0|* y2 = ?: D1|*int n = 0: D2|*DP n = 0: D3|* j = 0: D4|* cc = ?: D5|* ss = : D6|* w = : DAtlepio4: scfinal: ; ; ; ptr5; ptr5!0x700+0xD0 ; dnop enra enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul enra enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ; jloop notcos; dnop halt; ; ; ; dnop srccmul clkcc halt; ; ptr5; ptr5!c_sione|* if DO_COS, n++. ; i2cmp enra halt; regtoti; rcssp ptr5; lpreg!1|* Add to lpreg so that after notcos: if we're doing a cos, when we lpreg-, the result will|* be 0 if we're doing a cos. (if we're doing a sin, it'll be 0). ; ; ; ptr5; ptr5!0x700+0xD2 ; i2add enrb halt; regtoti; rcssp ptr5; ; tioe tisp; ; ptr5; ; tioe tisp halt; titoreg; rcssp ptr5;notcos: ; ; ; ptr5; ptr5!0x700+0xD2|*|* (n anded 1) == 0 |* ; i2cmp enra halt; regtoti; rcssp ptr5; lpreg- ; ; ; ptr5; ptr5!c_sione jloop dosincos; i2land enrb halt; regtoti; rcssp ptr5; ; ; ; ; ; i2cmp enrb tioe tisp halt; ; ; ; ; ; ptr5; ptr5!szero ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xD0 jne docos; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dnop enra loaddp halt; regtoti; rcslsw ptr5; ; ; ; ; ptr5!c_dsin5 call ss; ; ; ptr5; ; ; ; ptr5; ptr5!0x700+0xD4 ; i2cmp enra halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!szero ; i2cmp enrb halt; regtoti; rcssp ptr5; ; ; ; ptr5; ptr5!0x700+0xD6 jne sincos2; dnop enra loaddp halt; regtoti; rcsmsw ptr5; ; dmul mulbcreg enra loaddp halt; regtoti; rcslsw ptr5;|* compute w = y1 - y1*z*ss ; dmul mulbcreg; ; ; ; dnop; ; ; ; dnop enra tioe timsw loaddp halt;; ; ; dnop enra tioe tilsw loaddp halt;; ; ; dnop; ; ptr5; ptr5!0x700+0xD0 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; dmul enrb loaddp halt; regtoti; rcslsw ptr5; ; dmul; ; ptr5; ptr5!0x700+0xD0 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5; ; drsub aluamul enrb loaddp halt; regtoti; rcslsw ptr5; ; dnop; ; ptr5; ptr5!0x700+0xDA ; dnop tioe timsw halt; titoreg; rcsmsw ptr5; call trigend; dnop tioe tilsw halt; titoreg; rcslsw ptr5;sincos2:|*|* compute w = y1 - (y1*z*ss - (y2-0.5*(z*y2)))|* ; dmul; ; ptr5; ptr5!0x700+0xD1 ; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -