mpdigdiv.s
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· S 代码 · 共 42 行
S
42 行
/* * This only works on R[45]000 chips that allow 64 bit * integer arithmetic even when uding 32 bit addresses * * R1 = dividend* * R2 = dividend[low] * R3 = dividend[high] * R4 = 32 bit divisor * R5 = quotient* */TEXT mpdigdiv(SB),$0 MOVW 0(R1),R2 MOVW 4(R1),R3 MOVW divisor+4(FP),R4 MOVW quotient+8(FP),R5 /* divisor == 0 */ BEQ R4,_digovfl /* dividend >= 2^32 * divisor */ SGTU R4,R3,R7 BEQ R7,_digovfl_digdiv1: SLLV $32,R2 SLLV $32,R3 SRLV $32,R2 ADDVU R2,R3 SLLV $32,R4 SRLV $32,R4 DIVVU R4,R3 MOVW LO,R1 MOVW R1,0(R5) RET_digovfl: MOVW $-1,R1 MOVW R1,0(R5) RET
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?