📄 tran.u
字号:
; csuxa usp; ; ; ; ; ; ; ; ptr1; ; woea; dtor; ; ramwe rcssp ptr1; call idle1; ; dtor; ; ramwe ptr1;xsln.e1: ; ; ; ; ; ptr5!sminnorm ; ; ; ; rcssp ptr5; call wait3; lbsf scmp csla; reg; ; ; ; csuxa usp; ; ; ; ; csuxa usp; ; ; ; ptr5!c_smaxln jwerr soberr; woea; ; ; ; jlt soberr; woea; ; ; ; ; ; ; ; rcssp ptr5; call wait3; lbsf scmp csla; reg; ; ; call wait1; csuxa usp; ; ; ; jgt soberr; woea; ; ; ; call sgetmexp; ; ; ; ; call stwoton; ; ; ; ; ; ; ; ; ; ; ; ; recoe; ; ; las cslm; reg; recoe; ; call wait1; csuxa ulsw; ; ; ;| *start x * twoton(-n) ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ptr5!ssqrt2 ; ; ; ; rcssp ptr5; ; lbs csla; reg; ; ; ; las cslm csuxm usp; ; ; ; ptr5!c_dSCRATCH_10 ; ; ; ; ptr5; ; lasf scmp csla woem; dtor; ; ramwe rcssp ptr5; ; ; dtor; ; ramwe ptr5; ; ; ; ; ; ptr5!shalf ; ; ; ; rcssp ptr5; ; lbsf smul cslm csuxa usp;reg; ; ; ; ; ; ; ; jle xsln.e2; woea; ; ; ; ; ; ; ; ; ; csuxm usp; ; ; ; ptr5!c_dSCRATCH_10 ; ; ; ; ptr5; ; woem; dtor; ; ramwe rcssp ptr5; ; ; dtor; ; ramwe ptr5; ptr5!sone ; ; ; ; rcssp ptr5; ; lbs csla; reg; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5;| *start m = m - 1 (m is -n) call wait3; lasf ssub csla; reg; ; ; ; csuxa usp; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; ptr5; ; woea; dtor; ; ramwe rcssp ptr5; ; ; dtor; ; ramwe ptr5;xsln.e2: ; ; ; ; ; ptr5!c_dSCRATCH_10 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; ptr5!sone ; ; ; ; rcssp ptr5; call wait3; lbsf ssub csla; reg; ; ; call wait1; csuxa usp; ; ; ; ; woea; dtor; recclk; ; ; ; dtor; ; ; ; ; ; recclk; ; call slogapprox;; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ; las cslm; reg; ; ; ptr5!c_sloge2b ; las csla csuxa usp; ; ; rcssp ptr5; call wait3; lbsf smn cslm; reg; ; ; call wait1; csuxm usp; ; ; ;| *start (-(-n) * loge2b) + logapprox(p-1) ; lbsf sadd csla woem; ; ; ; ptr5!c_sloge2a ; ; ; ; rcssp ptr5;| *start -(-n) * loge2a call wait1; lbsf smn cslm; reg; ; ; call wait1; las csla csuxa usp; ; ; ; call wait1; csuxm usp; ; ; ;| *start (n*loge2a) + (n*loge2b + logapprox(p-1)) call salu.inx1; lbsf sadd csla woem; ; ; ;|*|* subroutine get minus exponent|* Enter with:|* x in recovery register|*|* Exit with:|* result in c_dSCRATCH_0|* (Note that the result is the negative of the exponent!)|*sgetmexp: ; ; ; recoe; ; ; lalf sfloat csla; reg; recoe; ; ; ; ; ; ; ptr5!c_stwopm23 ; ; ; ; rcssp ptr5; ; las cslm; reg; ; ; ; csuxa usp; ; ; ; ; ; ; ; ; ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxm usp; ; ; ; ; ; ; ; ; ; lasf scvtint csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; lalf sfloat csla csuxa ulsw;; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_s127 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; ; lbsf ssub csla csuxa usp;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa usp; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; ptr5; ; woea; dtor; ; ramwe rcssp ptr5; rtn; ; dtor; ; ramwe ptr5;|*|* subroutine logapprox|* Enter with:|* x in recovery register|*|* Exit with:|* result being calculated in ALU|*slogapprox: ; ; ; recoe; ; ptr5!stwo ; las csla; reg; recoe; ; ; ; ; ; rcssp ptr5; ; lbsf sadd csla; reg; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; lbsf sdiv csla csuxa usp;; ; ; lpreg!13slogap.e1: jloop slogap.e1;; ; ; ; ; ; ; ; ; lpreg- ; csuxa usp; ; ; ; ptr5!c_dSCRATCH_9 ; csuxa usp; ; ; ptr5;| *save this in temp9 for later use ; las cslm woea; dtor; ; ramwe rcssp ptr5; ; lbsf smul cslm woea; dtor; ; ramwe ptr5; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_slogs3 ; las cslm csuxm usp; ; ; rcssp ptr5;| *start z2 * s(3) ; lbsf smul cslm; reg; ; ; ; ; ; ; ; ptr5!c_slogs2 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; ; csuxm usp; ; ; ; ; ; ; ; ;| *start s(2) + (z2 * s(3)) ; lbsf sadd csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa usp; ; ; ; ; ; ; ; ;| *start z2 * (s2+z2*s3) ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ptr5!c_slogs1 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; ; csuxm usp; ; ; ; ; ; ; ; ; ; lbsf sadd csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa usp; ; ; ; ; ; ; ; ;| *start z2 * (s1+z2*(s2+z2*s3)) ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ; ; ; recoe; ; ; las csla; reg; recoe; ; ; csuxm usp; ; ; ; ; ; ; ; ; ; lbsf ssub csla woem; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_9 ; ; ; ; rcssp ptr5; ; las cslm; reg; ; ; ; csuxa usp; ; ; ; ; ; ; ; ;| *start z * (x-z2 ... ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxm usp; ; ; ; ; ; ; ; ;| *we clock status here for ln (this will generate exact for| *ln(1) and inexact for most other cases (all other cases| *should be inexact)) rtn jwerr werr cstat;lbsf ssub csla woem;; ; ;|*|* Double Precision ln(x) Instruction|*routine xd.ln w01000001111 lnop ssub call dtran.start;; ; ; ;dlog.entry: ; ; ; ; rcsmsw ptr1; ptr5!dsqrthalf ; lam csla; reg; ; rcslsw ptr1; ; lal csla; reg; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dcmp csla; reg; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ; ptr5!dsqrt2|* if the operand is a NaN, then branch jwerr doberr; woea; ; ; ;|* if x < sqrt(1/2) then branch jle xdln.e1; woea; ; ; ; ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dcmp csla; reg; ; ; ; csuxa umsw; ; ; ; ; ; ; ; ; ptr5!sone jgt xdln.e1; woea; ; ; ; ; ; ; ; rcssp ptr5; ; lbs csla; reg; ; ; call wait3; lf dsub csla; ; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ptr1; jne xdln.inx; woea; dtor; ; ramwe rcsmsw ptr1; ; woea; dtor; ; ramwe rcslsw ptr1; ; ; dtor; ; ramwe ptr1; call dlogapprox;; ; ; ; ; ; ; ; ; ptr5!c_szerostat ; ; ; recclk; rcssp ptr5;xdln.inxrtn: ; ; ; ; ; jwerr drestor.r1 cstat restore;; ; ; rcsmsw ptr1; ; lam csla; reg; ; rcslsw ptr1; ; lal csla csuxm umsw; reg; ; ; ; csuxm ulsw; ; ; ; ; lbm csla woem; ; ; ; call wait3; lblf dadd csla woem; ; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ptr1; ; woea; dtor; ; ramwe rcsmsw ptr1; ; woea; dtor; ; ramwe rcslsw ptr1; call idle1; ; dtor; ; ramwe ptr1;xdln.inx:|* generate inexact status ; ; dtor; ; ramwe ptr1; call dlogapprox;; ; ; ; ; ; ; ; ; ptr5!c_sinexact call xdln.inxrtn;; ; recclk; rcssp ptr5;xdln.e1: ; ; ; ; ; ptr5!dminnorm ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dcmp csla; reg; ; ; ; csuxa umsw; ; ; ; ptr5!c_dmaxln ; ; ; ; ; jlt doberr; woea; ; ; ; ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dcmp csla; reg; ; ; call wait1; csuxa umsw; ; ; ; jgt doberr; woea; ; ; ; call dgetmexp; ; ; ; ; call dtwoton; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lam cslm; reg; ; rcslsw ptr1; ptr5!dzero ; lal cslm; reg; ; rcslsw ptr5; ; lbl cslm csuxa ulsw; reg; ; ; ; ; ; ; ;| *start x * twoton(-n) ; lbmf dmul cslm woea; ; ; ; ptr5!dsqrt2 ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ; lbl csla; reg; ; ; ; ; ; ; ; ; ; ; ; ; ; lam cslm csuxm umsw; ; ; ; ptr5!c_dSCRATCH_10 ; lal cslm csuxm ulsw; ; ; ptr5;| *save p in c_dSCRATCH_10 ; lam csla woem; dtor; ; ramwe rcsmsw ptr5; ; lalf dcmp csla woem; dtor; ; ramwe rcslsw ptr5; ; ; dtor; ; ramwe ptr5; ptr5!shalf ; ; ; ; ; ; ; ; ; rcssp ptr5; ; lbsf dmul cslm csuxa umsw;reg; ; ; ptr5!c_dSCRATCH_10 ; ; ; ; ; jle xdln.e2; woea; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_10 ; ; ; ; ; ; ; ; ; ; ; csuxm umsw; ; ; ; ; csuxm ulsw; ; ; ptr5; ; woem; dtor; ; ramwe rcsmsw ptr5; ; woem; dtor; ; ramwe rcslsw ptr5; ; ; dtor; ; ramwe ptr5; ptr5!sone ; ; ; ; rcssp ptr5; ptr5!c_dSCRATCH_0 ; lbs csla; reg; ; rcssp ptr5;| *start m = m - 1 (m is -n) call wait3; lasf ssub csla; reg; ; ; ; csuxa usp; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; ptr5; ; woea; dtor; ; ramwe rcssp ptr5; ; ; dtor; ; ramwe ptr5; ptr5!c_dSCRATCH_10xdln.e2: ; ; ; ; rcsmsw ptr5; ptr5!sone ; lam csla; reg; ; rcssp ptr5; ptr5!c_dSCRATCH_10 ; lbs csla; reg; ; rcslsw ptr5; call wait3; lalf dsub csla; reg; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ptr1; ; woea; dtor; ; ramwe rcsmsw ptr1; ; woea; dtor; ; ramwe rcslsw ptr1; call dlogapprox;; dtor; ; ramwe ptr1; call wait2; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ptr5!c_dloge2b ; las cslm; reg; ; rcsmsw ptr5; ; lbm cslm; reg; ; rcslsw ptr5;| *start dble(n) * dloge2b ; lblf dmn cslm; reg; ; ; ; csuxm umsw; ; ; ; ; csuxm ulsw; ; ; ; ; lam csla woem; ; ; ; call wait1; lal csla woem; ; ; ; ; csuxm umsw; ; ; ; ; csuxm ulsw; ; ; ; ; lbm csla woem; ; ; ;| *start (n*loge2b + logapprox(p)) ; lblf dadd csla woem; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; ; ; ; ; ; rcsmsw ptr5; ; las cslm; reg; ; ; ; lbm csla csuxa umsw; ; ; ; ; lbl csla csuxa ulsw; ; ; rcsmsw ptr1; ; lam csla; reg; ; rcslsw ptr1; ptr5!c_dloge2a ; lalf dadd csla; reg; ; rcsmsw ptr5; ; lbm cslm; reg; ; rcslsw ptr5;| *start dble(n) * dloge2a ; lblf dmn cslm; reg; ; ; ; ; ; ; ; ; lbm csla csuxa umsw; ; ; ; call wait2; lbl csla csuxa ulsw; ; ; ; ; csuxm umsw; ; ; ; ; csuxm ulsw; ; ; ; ; lam csla woem; ; ; ;| *start (n*loge2a) + (n*loge2b + logapprox(p)) call drtn.inx.soon;lalf dadd csla woem; ; ; ;|*|* subroutine get minus exponent|* Enter with:|* x at ptr1|*|* Exit with:|* result in c_dSCRATCH_0 (single precision)|* (Note that the result is the negative of the exponent!)|*dgetmexp: ; ; ; ; rcsmsw ptr1; ; lalf sfloat csla; reg; ; ; ptr5!c_stwopm20 ; ; ; ; ; ; ; ; ; rcssp ptr5; ; las cslm; reg; ; ; ; csuxa usp; ; ; ; ; ; ; ; ; ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxm usp; ; ; ; ; ; ; ; ; ; lasf scvtint csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; lalf sfloat csla csuxa ulsw;; ; ; ptr5!c_s1023 ; ; ; ; ; ; ; ; ; ; ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; ; lbsf ssub csla csuxa usp;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa usp; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; ptr5; ; woea; dtor; ; ramwe rcssp ptr5; rtn; ; dtor; ; ramwe ptr5;|*|* subroutine logapprox|* Enter with:|* x ptr1|*|* Exit with:|* result being calculated in MUL|*dlogapprox: ; ; ; ; rcsmsw ptr1; ptr5!stwo ; lam csla; reg; ; rcssp ptr5; ; lbs csla; reg; ; rcslsw ptr1; ; lalf dadd csla; reg; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; lbm csla csuxa umsw; ; ; ; ; lblf ddiv csla csuxa ulsw;; ; ; lpreg!28dlogap.e1: jloop dlogap.e1;; ; ; ; ; ; ; ; ; lpreg- ; csuxa umsw; ; ; ; ptr5!c_dSCRATCH_9 ; csuxa ulsw; ; ; ptr5;| *save z in temp9 for later use ; lam cslm csuxa umsw woea;dtor; ; ramwe rcsmsw ptr5; ; lal cslm csuxa ulsw woea;dtor; ; ramwe rcslsw ptr5; ; lbm cslm woea; dtor; ; ramwe ptr5; ; lblf dmul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; lam cslm csuxm umsw; ; ; ; ptr5!c_dlogs7 ; lal cslm csuxm ulsw; ; ; rcsmsw ptr5; ; lbm cslm; reg; ; rcslsw ptr5; ; lblf dmul cslm; reg; ; ; lpreg!6dlogapp.lp: ; ; ; ; ; ; ; ; ; ; ptr5- ; ; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; ; lal csla; reg; ; ; lpreg- ; csuxm umsw; ; ; ; ; csuxm ulsw; ; ; ; ; lbm csla woem; ; ; ; ; lblf dadd csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ; jloop dlogapp.lp;lbm cslm woea; ; ; ; ; lblf dmul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -