📄 cr.u
字号:
call mdmovelp; halt; regtotmp; rcsmsw ptr2;routine cd.MV3 001001100101 halt; ; ; ; halt; ; ptr2; lpreg!9 call mdmovelp; halt; regtotmp; rcsmsw ptr2;routine cd.MV4 001001100111 halt; ; ; ; halt; ; ptr2; lpreg!16 call mdmovelp; halt; regtotmp; rcsmsw ptr2;|* Move matrix at ptr2 to ptr1mdmovelp: ; halt; regtotmp; rcslsw ptr2; ; halt; ; ptr1; ptr2+ ; halt; tmptoreg; rcsmsw ptr1; lpreg- ; halt; tmptoreg; rcslsw ptr1; jloop mdmovelp; halt; ; ptr2; ptr1+ ; halt; regtotmp; rcsmsw ptr2; pipe idl1; halt; ; imm2;|*|* 2 X 2 Matrix Transpose|* Single Precision|*routine cs.TR2 001001101000 halt; ; ;|* load ptr5 with 0x700+D0 - 1, since ptr5 is increased at beginning of loop. ; halt; ; ; ptr5!0x700+0xCF ; halt; ; ; lpreg!0x02 call tsmovelp; halt; ; ptr1; ptr1+ ; halt; ; ; ptr5!0x700+0xD0 call tsmove; halt; ; ptr5;|* Note: Do not need to reload ptr5, since tsmove incremented it by 1. call tsmove; halt; ; ptr5; pipe idl1; halt; ; imm2;|*|* 3 X 3 Matrix Transpose|* Single Precision|*routine cs.TR3 001001101010 halt; ; ; ; halt; ; ; ptr5!0x700+0xCF ; halt; ; ; lpreg!0x07 call tsmovelp; halt; ; ptr1; ptr1+ ; halt; ; ; ptr5!0x700+0xD4 call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD1 call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD6 call tsmove; halt; ; ptr5;|* Do not need to reload element 2,2, as it's not transposed. Just decrease the pointer and move the|* Next element ; halt; ; ; ptr5!0x700+0xD0 call tsmove; halt; ; ptr5; ptr1- ; halt; ; ; ptr5!0x700+0xD5 call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD2 call tsmove; halt; ; ptr5; pipe idl1; halt; ; imm2;|*|* 4 X 4 Matrix Transpose|* Single Precision|*routine cs.TR4 001001101100 halt; ; ; ; halt; ; ; ptr5!0x700+0xCF ; halt; ; ; lpreg!0xE call tsmovelp; halt; ; ptr1; ptr1+ ; halt; ; ; ptr5!0x700+0xDA call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD6 call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD2 call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xDD call tsmove; halt; ; ptr5;|* Do not need to reload element 3,3, as it's not transposed. Just decrease the pointer and move the|* Next element ; halt; ; ; ptr5!0x700+0xD5 call tsmove; halt; ; ptr5; ptr1- ; halt; ; ; ptr5!0x700+0xD1 call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xDC call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD8 call tsmove; halt; ; ptr5;|* Do not need to reload element 2,2, as it's not transposed. Just decrease the pointer and move the|* Next element ; halt; ; ; ptr5!0x700+0xD0 call tsmove; halt; ; ptr5; ptr1- ; halt; ; ; ptr5!0x700+0xDB call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD7 call tsmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD3 call tsmove; halt; ; ptr5; pipe idl1; halt; ; imm2;|* tsmovelp: ; halt; regtotmp; rcssp ptr1; ptr5+ ; halt; ; ptr5; lpreg- jloop tsmovelp; halt; tmptoreg; rcssp ptr5; ptr1+ rtn; halt; ; ptr1;|* move element from ptr5 to ptr1|* ptr1 is decremented at beginning of loop, since 'tsmovelp' incremented it at end of looptsmove: ; halt; regtotmp; rcssp ptr5; ptr1- ; halt; ; ptr1; ptr5+ rtn; halt; tmptoreg; rcssp ptr1;|*|* 2 X 2 Matrix Transpose|* Double Precision|*routine cd.TR2 001001101001 halt; ; ;|* load ptr5 with 0x700+D0 - 1, since ptr5 is increased at beginning of loop. ; halt; ; ; ptr5!0x700+0xCF ; halt; ; ; lpreg!0x02 call tdmovelp; halt; ; ptr1; ptr1+ ; halt; ; ; ptr5!0x700+0xD0 call tdmove; halt; ; ptr5;|* Note: Do not need to reload ptr5, since tdmove incremented it by 1. call tdmove; halt; ; ptr5; call idle1; halt; ; ;|*|* 3 X 3 Matrix Transpose|* Double Precision|*routine cd.TR3 001001101011 halt; ; ; ; halt; ; ; ptr5!0x700+0xCF ; halt; ; ; lpreg!0x07 call tdmovelp; halt; ; ptr1; ptr1+ ; halt; ; ; ptr5!0x700+0xD4 call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD1 call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD6 call tdmove; halt; ; ptr5;|* Do not need to reload element 2,2, as it's not transposed. Just decrease the pointer and move the|* Next element ; halt; ; ; ptr5!0x700+0xD0 call tdmove; halt; ; ptr5; ptr1- ; halt; ; ; ptr5!0x700+0xD5 call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD2 call tdmove; halt; ; ptr5; pipe idl1; halt; ; imm2;|*|* 4 X 4 Matrix Transpose|* Double Precision|*routine cd.TR4 001001101101 halt; ; ; ; halt; ; ; ptr5!0x700+0xCF ; halt; ; ; lpreg!0xE call tdmovelp; halt; ; ptr1; ptr1+ ; halt; ; ; ptr5!0x700+0xDA call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD6 call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD2 call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xDD call tdmove; halt; ; ptr5;|* Do not need to reload element 3,3, as it's not transposed. Just decrease the pointer and move the|* Next element ; halt; ; ; ptr5!0x700+0xD5 call tdmove; halt; ; ptr5; ptr1- ; halt; ; ; ptr5!0x700+0xD1 call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xDC call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD8 call tdmove; halt; ; ptr5;|* Do not need to reload element 2,2, as it's not transposed. Just decrease the pointer and move the|* Next element ; halt; ; ; ptr5!0x700+0xD0 call tdmove; halt; ; ptr5; ptr1- ; halt; ; ; ptr5!0x700+0xDB call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD7 call tdmove; halt; ; ptr5; ; halt; ; ; ptr5!0x700+0xD3 call tdmove; halt; ; ptr5; pipe idl1; halt; ; imm2;|*|* move matrix at ptr1 to ptr 5.|* ptr5 is incremented at beginning of loop, ptr1 at end of looptdmovelp: ; halt; regtotmp; rcsmsw ptr1; ptr5+ ; halt; regtotmp; rcslsw ptr1; ; halt; ; ptr5; lpreg- ; halt; tmptoreg; rcsmsw ptr5; ptr1+ jloop tdmovelp; halt; tmptoreg; rcslsw ptr5; rtn; halt; ; ptr1;|* move element from ptr5 to ptr1|* ptr1 is decremented at beginning of loop, since 'tdmovelp' incremented it at end of looptdmove: ; halt; regtotmp; rcsmsw ptr5; ptr1- ; halt; regtotmp; rcslsw ptr5; ; halt; ; ptr1; ptr5+ ; halt; tmptoreg; rcsmsw ptr1; rtn; halt; tmptoreg; rcslsw ptr1;|*|* Command Register instruction|* reg1 <- square root (reg2)|* Single Precision|*routine cs.sqrt 001000010000 sqrt enra halt; regtoti; rcssp imm2; ; ; ; ptr1; ; halt; regtotmp; rcssp ptr1; ; ; ; ; ; ; ; ; ; ; ; ; ; halt; ; ptr1; jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1; pipe idl1; halt; ; imm2;|*|* Command Register instruction|* reg1 <- square root (reg2)|* Double Precision|*routine cd.sqrt 001000010001 dnop enra loaddp halt; regtoti; rcsmsw imm2; ; dsqrt enra loaddp halt; regtoti; rcslsw imm2; ; dnop; ; ptr1; ; dnop halt; regtotmp; rcslsw ptr1; ; dnop; ; ; ; dnop; ; ; ; dnop; ; ; ; dmul; ; ; ; dmul; ; ; ; dmul; ; ptr1; jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;|*|* Command Register instruction|* reg1 <- hyptoenuse (reg2, reg3)|* Single Precision|*routine cs.hypot 001000010010 scvtd enra halt; regtoti; rcsmsw imm2; ; scvtd enra halt; regtoti; rcsmsw imm2; ; dnop tioe timsw; ; ; ; dnop enra enrb tioe timsw loaddp halt;; ; ; dmul enra enrb tioe tilsw loaddp halt;; ; ; dmul; ; ; ; dnop tioe timsw; ; ; ; dnop tioe timsw halt; titotmp; rcsmsw; jtierr hang cstat; dnop tioe tilsw halt; titotmp; rcslsw; ; scvtd enra halt; regtoti; rcssp ptr3; ; scvtd enra halt; regtoti; rcssp ptr3; ; dnop tioe timsw; ; ; ; dnop enra enrb tioe timsw loaddp halt;; ; ; dmul enra enrb tioe tilsw loaddp halt;; ; ; dmul; ; ; ; dnop enrb loaddp halt; tmptoti; rcsmsw; jtierr hang cstat; dadd aluamul enrb loaddp halt; tmptoti; rcslsw; ; dnop tioe timsw; ; ; jtierr hang cstat; dnop enra tioe timsw loaddp halt;; ; ; dsqrt enra tioe tilsw loaddp halt;; ; ; dnop; ; ; ; dnop halt; ; ; ; dnop; ; ; ; dnop; ; ; ; dnop; ; ; ; dmul; ; ; ; dmul; ; ; ; dmul tioe timsw; ; ; jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw; ; dnop tioe tilsw halt; titotmp; rcslsw; ; dnop halt; ; ; ; dnop enra loaddp halt; tmptoti; rcsmsw; ; dcvts enra loaddp halt; tmptoti; rcslsw; ; dcvts; ; ; jtierr hang cstat; dnop tioe timsw halt; ; ptr1; call idle1; dnop tioe timsw halt; titoreg; rcssp ptr1;|*|* Command Register instruction|* reg1 <- hypotenuse (reg2, reg3)|* Double Precision|*routine cd.hypot 001000010011 dnop enra enrb loaddp halt; regtoti; rcsmsw imm2; ; dmul enra enrb loaddp halt; regtoti; rcslsw imm2; ; dmul; ; ; ; dmul; ; ; lpreg!0x01 jtierr dhardway; dnop tioe timsw halt; titotmp; rcsmsw; ; dnop tioe tilsw halt; titotmp; rcslsw; ; dnop enra enrb loaddp halt; regtoti; rcsmsw ptr3; ; dmul enra enrb loaddp halt; regtoti; rcslsw ptr3; ; dmul; ; ; ; dnop enrb loaddp halt; tmptoti; rcsmsw; jtierr dhardway; dadd aluamul enrb loaddp halt; tmptoti; rcslsw; ; dnop; ; ; jtierr dhard2; dnop enra tioe timsw loaddp halt;; ; ; dsqrt enra tioe tilsw loaddp halt;; ; ; dnop; ; ptr1; ; dnop halt; regtotmp; rcslsw ptr1; ; dnop; ; ptr5; ptr5!0x700+0xD2 ; dnop; tmptoreg; rcslsw ptr5; ; dnop; ; ; lpreg!0x0 ; dmul; ; ; ; dmul; ; ; ; dmul; ; ptr1; jtierr dhardway cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1; call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;dhard2: ; dnop; ; ; ; dnop; ; ; ; dnop; ; ; ; dnop; ; ; ; dnop; ; ; ; dnop; ; ; ; dnop; ; ; ; dnop halt; ; ;dhardway:|* compare abs(reg2) to abs(operand) ; dnop; ; ; ; dnop enrb loaddp halt; regtoti; rcsmsw ptr3; ; dnop enrb loaddp halt; regtoti; rcslsw ptr3; ; dnop enra loaddp halt; regtoti; rcsmsw ptr2; ; dcmpm enra loaddp halt; regtoti; rcslsw ptr2; ; dcmpm; ; ; jtierr cklpreg cstat; dcmpm halt; ; ; ; dnop halt; ; ; jge dhyptyox; dnop enra loaddp halt; regtoti; rcsmsw ptr3; ; dnop enra loaddp halt; regtoti; rcslsw ptr3; ; ddiv enrb loaddp halt; regtoti; rcsmsw ptr2; ; ddiv enrb loaddp halt; regtoti; rcslsw ptr2; ; dnop; ; ptr1; ; dnop halt; regtotmp; rcslsw ptr1; ; dnop; ; ptr5; ptr5!0x700+0xD2 ; dnop; tmptoreg; rcslsw ptr5; ; dnop; ; ; ; dmul; ; ; ; dmul halt; ; ; ; dnop tioe timsw halt; titotmp; rcsmsw; ; dnop tioe tilsw halt; titotmp; rcslsw; ; dnop halt; ; ; ; dnop enra enrb loaddp halt; tmptoti; rcsmsw; ; dmul enra enrb loaddp halt; tmptoti; rcslsw; ; dmul; ; ; ; dnop; ; ptr5; ptr5!0x700+0xD0 ; dnop tioe timsw halt; titoreg; rcsmsw ptr5; ; dnop tioe tilsw halt; titoreg; rcslsw ptr5; ; dnop enra loaddp halt; regtoti; rcsmsw ptr2; ; dabs enra loaddp halt; regtoti; rcslsw ptr2; ; dnop; ; ptr5; ptr5!0x700+0xD1 ; dnop tioe timsw halt; titoreg; rcsmsw ptr5; call dfinhypot; dnop tioe tilsw halt; titoreg; rcslsw ptr5;dhyptyox: ; dnop enra loaddp halt; regtoti; rcsmsw ptr2; ; dnop enra loaddp halt; regtoti; rcslsw ptr2; ; dnop; ; ; ; ddiv enrb loaddp halt; regtoti; rcsmsw ptr3; ; ddiv enrb loaddp halt; regtoti; rcslsw ptr3; ; dnop; ; ptr1; ; dnop halt; regtotmp; rcslsw ptr1; ; dnop; ; ptr5; ptr5!0x700+0xD2 ; dnop; tmptoreg; rcslsw ptr5; ; dnop; ; ; ; dmul; ; ; ; dmul halt; ; ; ; dnop tioe timsw halt; titotmp; rcsmsw; ; dnop tioe tilsw halt; titotmp; rcslsw;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -