📄 tran.u
字号:
; lbl csla csuxa ulsw; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxm umsw; ; ; ; ; csuxm ulsw; ; ; ptr1; ; lam csla woem; ; ; ;| *start y * (s1 + ...)/(t1 + ...) ; lalf ddiv csla woem; ; ; ; lpreg!28dexp.div: jloop dexp.div; ; ; ; ; ; ; ; ; ; lpreg- ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ; ; lbm cslm woea; ; ; ; ; lblf dmul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_8 ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ; lbl csla; reg; ; ; ; csuxm umsw; ; ; ; ; csuxm ulsw; ; ; ; ; lam csla woem; ; ; ; ; lalf dsub csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ptr5; ; woea; dtor; ; ramwe rcsmsw ptr5; ; woea; dtor; ; ramwe rcslsw ptr5; rtn; ; dtor; ; ramwe ptr5;|*|* double precision twoton|* enter with:|* n in c_dSCRATCH_0 (single precision)|* exit with:|* ALU starting|*dtwoton: ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ptr5!c_s1023 ; las csla; reg; ; rcssp ptr5; ; lbsf sadd csla; reg; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_stwop20 ; ; ; ; rcssp ptr5; ; las cslm csuxa usp; reg; ; ; ; ; ; ; ; ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxm usp; ; ; ; ; ; ; ; ; rtn; lasf scvtint csla woem; ; ; ;|*|* Single Precision ln(1+x) Instruction|*routine xs.ln1 w01000001010 lnop ssub call stran.start;; ; ; ; ; ; ; ; ; ptr5!c_stwopm25 ; ; ; ; rcssp ptr5; call wait3; lbsf scmpm csla; reg; ; ; ; csuxa usp; ; ; ; lpreg!9 ; csuxa usp; ; ; ; ptr5!c_ssqrthalfm1|* if the operand was a NaN, then branch jwerr soberr; woea; ; ; ;|* if abs(operand) >= 2**-25 then branch jge xsln1.e1; woea; ; ; ; call sreturnx; ; ; ; rcssp ptr5;|* abs(operand) >= 2**-25xsln1.e1: call wait3; lbsf scmp csla; reg; ; ; ; csuxa usp; ; ; ; ; ; ; ; ; ptr5!c_ssqrt2m1 jle xsln1.e2 ;woea; ; ; ; ; ; ; ; rcssp ptr5; call wait3; lbsf scmp csla; reg; ; ; call wait1; csuxa usp; ; ; ; jgt xsln1.e2 ;woea; ; ; ; call slogapprox;; ; ; ; call salu.inx2; ; ; ; ;|*|* Double Precision ln(1+x) Instruction|*routine xd.ln1 w01000001011 lnop ssub call dtran.start;; ; ; ; ; ; ; ; rcsmsw ptr1; ; lam cslma; reg; ; rcslsw ptr1; ptr5!c_dtwopm54 ; lal cslma; reg; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5;| *save ptr2 for later comparison ; lblf dcmp csla; reg; recclk; rcsmsw ptr2; ; ; ; recclk; rcslsw ptr2; ptr5!c_dSCRATCH_6 ; ; ; ; ptr5; ; ; ; recoe; ramwe rcsmsw ptr5; ; csuxa umsw; ; recoe recclk;ramwe ptr5; ; ; ; recoe; ramwe rcslsw ptr5; jle xdln1.e1; woea; ; recoe; ramwe ptr5; ; ; ; ; ; ptr5!c_dsqrt2m1 ; ; ; ; rcsmsw ptr5;| *x > 2**-54 ; lbm csla; reg; ; rcslsw ptr5; ptr5!c_dsqrt8m1 call wait3; lblf dcmp csla; reg; ; ; call wait1; csuxa umsw; ; ; ; jlt xdln1.br2; woea; ; ; ; ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dcmp csla; reg; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ; ptr5!sone jlt xdln1.br31; woea; ; ; ; jwerr doberr; woea; ; ; ;xdln1.br4: ; ; ; ; rcssp ptr5; ; lbs csla; reg; ; ; call wait3; lf dadd csla; ; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ptr1; ; woea; dtor; ; ramwe rcsmsw ptr1; ; woea; dtor; ; ramwe rcslsw ptr1; call dlog.entry;; dtor; ; ramwe ptr1;xdln1.br2: call dlogapprox;; ; ; ; call wait2; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lam csla; reg; ; rcslsw ptr1; ; lal csla csuxm umsw; reg; ; ; ; csuxm ulsw; ; ; ; ; lbm csla woem; ; ; ; call drtn.inx.soon;lblf dadd csla woem; ; ; ;xdln1.e1: ; ; ; ; ; ptr5!c_dmtwopm54 ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ptr5!c_dsqrthalfm1 call wait3; lblf dcmp csla; reg; ; ; call wait1; csuxa umsw; ; ; ; jge xdln1.br1; woea; ; ; ; ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ptr5!c_dsqrteighthm1 call wait3; lblf dcmp csla; reg; ; ; call wait1; csuxa umsw; ; ; ; jge xdln1.br2; woea; ; ; ; ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dcmp csla; reg; ; ; call wait1; csuxa umsw; ; ; ; jle xdln1.br4; woea; ; ; ; ; ; ; ; ; ptr5!sonexdln1.br32: ; ; ; ; ; ptr5!stwo ; ; ; ; rcssp ptr5; ptr5!sone call wait4; lbsf dmul cslm; reg; ; ; ; ; ; ; rcssp ptr5; ; las 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 dlogapprox;; dtor; ; ramwe ptr1; call wait1; ; ; ; ; ; ; ; ; ; ptr5!c_dloge2b ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ; lbl csla csuxm umsw; reg; ; ; ; csuxm ulsw; ; ; ; ; lam csla woem; ; ; ; ptr5!stwo ; lalf dsub csla woem; ; ; ; ; ; ; ; rcssp ptr5; ptr5!c_dSCRATCH_6 ; las cslm; reg; ; rcsmsw ptr5; ; lbm cslm; reg; ; rcslsw ptr5; ; lblf dmul cslm; reg; ; ; ; lbm csla csuxa umsw; ; ; ; ptr5!c_dloge2afrom1 ; lbl csla csuxa ulsw; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; call wait3; lalf dadd csla; reg; ; ; ; lbm csla csuxma umsw; ; ; ; ; lbl csla csuxma ulsw; ; ; ; ; lam csla woem; ; ; ; call drtn.inx.soon;lalf dadd csla woem; ; ; ;xdln1.br1: call wait3; lf dcmp0 csla; ; ; ; call wait1; csuxa umsw; ; ; ; jeq dreturnzerostat;woea; ; ; ; call dreturninexact;; ; ; ;xdln1.br31: ; ; ; ; ; ptr5!shalf ; ; ; ; rcssp ptr5; ptr5!smhalf call wait4; lbsf dmul cslm; reg; ; ; ; ; ; ; rcssp ptr5; ; lbs csla csuxm umsw; reg; ; ; ; csuxm ulsw; ; ; ; ; lam csla woem; ; ; ; call wait3; lalf dadd csla woem; ; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ptr1; ; woea; dtor; ; ramwe rcsmsw ptr1; ; woea; dtor; ; ramwe rcslsw ptr1; call dlogapprox;; dtor; ; ramwe ptr1; call wait1; ; ; ; ; ; ; ; ; ; ptr5!c_dloge2b ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ; lbl csla csuxm umsw; reg; ; ; ; csuxm ulsw; ; ; ; ; lam csla woem; ; ; ; ptr5!shalf ; lalf dadd csla woem; ; ; ; ; ; ; ; rcssp ptr5; ptr5!c_dSCRATCH_6 ; las cslm; reg; ; rcsmsw ptr5; ; lbm cslm; reg; ; rcslsw ptr5; ; lblf dmul cslm; reg; ; ; ; lbm csla csuxa umsw; ; ; ; ptr5!c_dloge2amhalf ; lbl csla csuxa ulsw; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; call wait3; lalf dadd csla; reg; ; ; ; lbm csla csuxma umsw; ; ; ; ; lbl csla csuxma ulsw; ; ; ; ; lam csla woem; ; ; ; call drtn.inx.soon;lalf dadd csla woem; ; ; ;|*|* Single Precision e**x Instruction|*routine xs.ex w01000001100 lnop ssub call stran.start;; ; ; ; ; ; ; ; ; ptr5!c_s87 ; ; ; ; rcssp ptr5; call wait3; lbsf scmpm csla; reg; ; ; ; csuxa usp; ; ; ; lpreg!9 ; csuxa usp; ; ; ; ptr5!c_stwopm13|* if the operand was a NaN, then branch jwerr soberr; woea; ; ; ;|* if abs(operand) > 87 then branch jgt xsx.t1; woea; ; ; ;|* abs(operand) <= 87 ; ; ; ; rcssp ptr5; call wait3; lbsf scmpm csla; reg; ; ; call wait1; csuxa usp; ; ; ; jgt xsx.e1; woea; ; ; ; ; ; ; ; ; ptr5!c_dmode|* abs(operand) < 2**-13 : return 1 + x call wait3; lf scmp0 csla; ; ; ; ; csuxa usp; ; ; ; ; ; ; ; ; ptr5!sone jeq sreturnx1; woea; ; ; ; ; ; ; ; rcssp ptr5; call salu.inx1; lbsf sadd csla; reg; ; ;xsx.t1:| * abs(x) > 87| if x < -87 and if mode == fast then return zero; else punt call wait3; lf scmp0 csla; ; ; ; ; csuxa usp; ; ; ; ptr5!c_dmode ; ; ; ; ; jgt soberr; woea; ; ; ; ; ; ; ; rcssp ptr5; ptr5!c_dmode_fast ; las csla; reg; ; rcssp ptr5; ptr5!szero call wait3; lbsf scmp csla; reg; ; ; call wait1; csuxa usp; ; ; ; jne soberr; woea; ; ; ; ; ; ; recclk; rcssp ptr5; ; ; ; recclk; ptr1; ; ; ; recoe; ramwe rcssp ptr1; call sreturnexact;; ; recoe; ramwe ptr1;xsx.e1:| * 2**-13 < abs(x) < 87| if the mode register is not set up with the correct data| then punt ; ; ; ; rcssp ptr5; ptr5!c_dmode_cor ; las csla; reg; ; rcssp ptr5; call wait3; lbsf scmp csla; reg; ; ; call wait1; csuxa usp; ; ; ; jne soberr; woea; ; ; ;| proceed with expansion call sexpn; ; ; ; ; call sexps; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; call wait3; lasf scmp0 csla; reg; ; ; call wait1; csuxa usp; ; ; ; jne xsx.e2; woea; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_1|* n == 0, return real(e) + 1 ; ; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; ; lalf dcvts csla; reg; ; ; ptr5!sone ; ; ; ; rcssp ptr5; ; lbs csla; reg; ; ; ; ; ; ; ; ; lasf sadd csla csuxa usp;; ; ;salu.inx1: ; ; ; ; ;salu.inx2: call wait1; ; ; ; ;salu.inx4: ; csuxa usp; ; ; ; ; ; ; ; ptr1; ; woea; dtor; ; ramwe rcssp ptr1; call sreturninexact;; dtor; ; ramwe ptr1;xsx.e2: call stwoton; ; ; ; ;|stwoton leaves ptr5 at c_dSCRATCH_1 (e) call wait2; ; ; ; ; call wait1; csuxa ulsw; ; ; ; ; las cslm woea; ; ; ; ptr5!c_dSCRATCH_1 ; ; ; ; rcsmsw ptr5; ptr5!sone ; lam csla; reg; ; rcssp ptr5; ptr5!c_dSCRATCH_1 ; lbs csla; reg; ; rcslsw ptr5; call wait3; lalf dadd csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; call wait3; lalf dcvts csla csuxa ulsw;; ; ; call wait1; csuxa usp; ; ; ; call wait3; lbsf smul cslm woea; ; ; ; ; csuxm usp; ; ; ; ; ; ; ; ptr1; ; woem; dtor; ; ramwe rcssp ptr1; call sreturninexact;; dtor; ; ramwe ptr1;|* call slog with x + 1xsln1.e2: ; ; ; ; ; ptr5!sone ; ; ; ; rcssp ptr5; call wait3; lbsf sadd csla; reg; ; ; call wait1; las csla csuxa usp; ; ; ; ; woea; dtor; recclk; ; call slog.entry;; dtor; recclk; ;|*|* Double Precision e**x Instruction|*routine xd.ex w01000001101 lnop ssub call dtran.start;; ; ; ;|* calculate e**x of ptr1 ; ; ; ; rcsmsw ptr1; ; lam csla; reg; ; rcslsw ptr1; ; lal csla; reg; ; ; ; ; ; ; ; ptr5!c_d708 ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dcmpm csla; reg; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ; ptr5!c_dtwopm27|* if the operand was a NaN, branch jwerr doberr; woea; ; ; ;|* if abs(operand) > 708 then branch jgt xdx.t1; woea; ; ; ; ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dcmpm csla; reg; ; ; call wait1; csuxa umsw; ; ; ; jle dreturnxp1; woea; ; ; ; call dexpapprox;; ; ; ;| *put 1 + (y + yc) intot ptr1 ; ; ; ; ; ptr5!c_dSCRATCH_8 ; ; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; ptr5!c_dSCRATCH_7 ; lal csla; reg; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ptr5!sone call wait3; lblf dadd csla; reg; ; ; ; lam csla csuxa umsw; ; ; rcssp ptr5; ; lbs csla; reg; ; ; call wait3; lalf dadd csla csuxa ulsw;; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ptr1; ; woea; dtor; ; ramwe rcsmsw ptr1; ; woea; dtor; ; ramwe rcslsw ptr1; ; ; dtor; ; ramwe ptr1; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; call wait3; lasf scmp0 csla; reg; ; ; call wait1; csuxa usp; ; ; ; jeq dreturninexact;woea; ; ; ; call dtwoton; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lam cslm; reg; ; rcslsw ptr1; ptr5!dzero ; lal cslm; reg; ; rcslsw ptr5; ; lbl cslm csuxa ulsw; reg; ; ; ; ; ; ; ; call dwrite1m; lbmf dmul cslm woea; ; ; ; ; ; ; ; ;xdx.t1:| * abs(x) > 708| if x <= -708 and if mode == fast then return zero; else punt call wait3; lf dcmp0 csla; ; ; ; ; csuxa umsw; ; ; ; ptr5!c_dmode ; ; ; ; ; jgt doberr; woea; ; ; ; ; ; ; ; rcssp ptr5; ptr5!c_dmode_fast ; las csla; reg; ; rcssp ptr5; ptr5!dzero call wait3; lbsf scmp csla; reg; ; ; call wait1; csuxa usp; ; ; ; jne doberr; woea; ; ; ; ; ; ; recclk; rcsmsw ptr5; ; ; ; recclk; rcslsw ptr5; ; ; ; ; ptr1; ; ; ; recoe; ramwe rcsmsw ptr1; ; ; ; recoe recclk;ramwe ptr1; ; ; ; recoe; ramwe rcslsw ptr1; call dreturnzerostat;; ; recoe; ramwe ptr1;dreturnxp1: ; ; ; ; ; ptr5!sone ; ; ; ; rcssp ptr5; ; lbs csla; reg; ; ; call wait3; lf dadd csla; ; ; ; ; csuxa umsw; ; ; ; ; lf dcmp0 csla csuxa ulsw;; ; ptr1; ; woea; dtor; ; ramwe rcsmsw ptr1; ; woea; dtor; ; ramwe rcslsw ptr1; ; ; dtor; ; ramwe ptr1; ; csuxa ulsw; ; ; ; ; ; ; ; ; jne dreturninexact;woea; ; ; ; call dreturnexact;; ; ; ;|*|* Single Precision ln(x) Instruction|*routine xd.ln w01000001110 lnop ssub call stran.start;; ; ; ;slog.entry: ; ; ; ; ; ptr5!ssqrthalf ; ; ; ; rcssp ptr5; call wait3; lbsf scmp csla; reg; ; ; ; csuxa usp; ; ; ; ; csuxa usp; ; ; ; ptr5!ssqrt2|* if the operand was a NaN, then branch jwerr soberr; woea; ; ; ;|* if abs(operand) < sqrt(1/2) then branch jle xsln.e1; woea; ; ; ; ; ; ; ; rcssp ptr5; ptr5!sone call wait3; lbsf scmp csla; reg; ; ; call wait1; csuxa usp; ; ; ; jgt xsln.e1; woea; ; ; ; ; ; ; ; rcssp ptr5; call wait3; lbsf ssub csla; reg; ; ; call wait1; csuxa usp; ; ; ; ; woea; dtor; recclk; ; call slogapprox;; dtor; recclk; ; call wait2; ; ; ; ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -