Fix a few dumbs in udivmod32
This commit is contained in:
parent
83b7698180
commit
4793f79e79
44
c64/math.asm
44
c64/math.asm
|
@ -296,18 +296,18 @@ generate_multiplication_tables:
|
||||||
udivmod32:
|
udivmod32:
|
||||||
// if (divisor == 0) {
|
// if (divisor == 0) {
|
||||||
lda udivmod32_divisor + 0
|
lda udivmod32_divisor + 0
|
||||||
bne !+
|
bne !if_end+
|
||||||
lda udivmod32_divisor + 1
|
lda udivmod32_divisor + 1
|
||||||
bne !+
|
bne !if_end+
|
||||||
lda udivmod32_divisor + 2
|
lda udivmod32_divisor + 2
|
||||||
bne !+
|
bne !if_end+
|
||||||
lda udivmod32_divisor + 3
|
lda udivmod32_divisor + 3
|
||||||
bne !+
|
bne !if_end+
|
||||||
|
|
||||||
// return 0;
|
// return 0;
|
||||||
rts
|
rts
|
||||||
!:
|
|
||||||
// }
|
// }
|
||||||
|
!if_end:
|
||||||
|
|
||||||
// uint32_t scaled_divisor = divisor;
|
// uint32_t scaled_divisor = divisor;
|
||||||
lda udivmod32_divisor + 0
|
lda udivmod32_divisor + 0
|
||||||
|
@ -339,23 +339,23 @@ udivmod32:
|
||||||
sta multiple + 3
|
sta multiple + 3
|
||||||
|
|
||||||
// uint32_t result = 0;
|
// uint32_t result = 0;
|
||||||
sta result + 0
|
sta udivmod32_result + 0
|
||||||
sta result + 1
|
sta udivmod32_result + 1
|
||||||
sta result + 2
|
sta udivmod32_result + 2
|
||||||
sta result + 3
|
sta udivmod32_result + 3
|
||||||
|
|
||||||
|
|
||||||
// while (scaled_divisor < dividend) {
|
// while (scaled_divisor < dividend) {
|
||||||
!while_start:
|
!while_start:
|
||||||
sec
|
sec
|
||||||
lda scaled_divisor + 0
|
lda scaled_divisor + 0
|
||||||
sbc dividend + 0
|
sbc udivmod32_dividend + 0
|
||||||
lda scaled_divisor + 1
|
lda scaled_divisor + 1
|
||||||
sbc dividend + 1
|
sbc udivmod32_dividend + 1
|
||||||
lda scaled_divisor + 2
|
lda scaled_divisor + 2
|
||||||
sbc dividend + 2
|
sbc udivmod32_dividend + 2
|
||||||
lda scaled_divisor + 3
|
lda scaled_divisor + 3
|
||||||
sbc dividend + 3
|
sbc udivmod32_dividend + 3
|
||||||
bcs !while_end+
|
bcs !while_end+
|
||||||
|
|
||||||
// scaled_divisor <<= 1
|
// scaled_divisor <<= 1
|
||||||
|
@ -404,7 +404,7 @@ udivmod32:
|
||||||
sta udivmod32_remainder + 3
|
sta udivmod32_remainder + 3
|
||||||
|
|
||||||
// }
|
// }
|
||||||
!if_end
|
!if_end:
|
||||||
|
|
||||||
// scaled_divisor >>= 1;
|
// scaled_divisor >>= 1;
|
||||||
lsr scaled_divisor + 3
|
lsr scaled_divisor + 3
|
||||||
|
@ -418,15 +418,15 @@ udivmod32:
|
||||||
ror multiple + 1
|
ror multiple + 1
|
||||||
ror multiple + 0
|
ror multiple + 0
|
||||||
|
|
||||||
lda multiple + 0
|
|
||||||
bne !do_start
|
|
||||||
lda multiple + 1
|
|
||||||
bne !do_start
|
|
||||||
lda multiple + 2
|
|
||||||
bne !do_start
|
|
||||||
lda multiple + 3
|
|
||||||
bne !do_start
|
|
||||||
// } while (multiple != 0);
|
// } while (multiple != 0);
|
||||||
|
lda multiple + 0
|
||||||
|
bne !do_start-
|
||||||
|
lda multiple + 1
|
||||||
|
bne !do_start-
|
||||||
|
lda multiple + 2
|
||||||
|
bne !do_start-
|
||||||
|
lda multiple + 3
|
||||||
|
bne !do_start-
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue