Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Lephenixnoir@Chaos /tmp $ sh3eb-elf-objdump -S _moddi3.o
- _moddi3.o: file format elf32-sh
- Disassembly of section .text:
- 00000000 <___moddi3>:
- #endif
- #ifdef L_moddi3
- DWtype
- __moddi3 (DWtype u, DWtype v)
- {
- 0: 2f 86 mov.l r8,@-r15
- 2: 2f 96 mov.l r9,@-r15
- 4: 2f a6 mov.l r10,@-r15
- 6: 2f b6 mov.l r11,@-r15
- 8: 2f c6 mov.l r12,@-r15
- a: 2f d6 mov.l r13,@-r15
- c: 4f 22 sts.l pr,@-r15
- Wtype c = 0;
- DWunion uu = {.ll = u};
- DWunion vv = {.ll = v};
- DWtype w;
- if (uu.s.high < 0)
- e: 44 11 cmp/pz r4
- 10: 89 01 bt 16 <___moddi3+0x16>
- 12: a0 a8 bra 166 <___moddi3+0x166>
- 14: 00 08 clrt
- 16: 68 43 mov r4,r8
- 18: 69 53 mov r5,r9
- #ifdef L_moddi3
- DWtype
- __moddi3 (DWtype u, DWtype v)
- {
- Wtype c = 0;
- 1a: ea 00 mov #0,r10
- DWtype w;
- if (uu.s.high < 0)
- c = ~c,
- uu.ll = -uu.ll;
- if (vv.s.high < 0)
- 1c: 46 11 cmp/pz r6
- 1e: 89 01 bt 24 <___moddi3+0x24>
- 20: a0 9e bra 160 <___moddi3+0x160>
- 22: 00 08 clrt
- 24: 62 63 mov r6,r2
- 26: 63 73 mov r7,r3
- }
- }
- #else /* UDIV_NEEDS_NORMALIZATION */
- if (d1 == 0)
- 28: 22 28 tst r2,r2
- DWunion rr;
- UWtype d0, d1, n0, n1, n2;
- UWtype q0, q1;
- UWtype b, bm;
- d0 = dd.s.low;
- 2a: 67 33 mov r3,r7
- d1 = dd.s.high;
- 2c: 61 23 mov r2,r1
- n0 = nn.s.low;
- 2e: 6b 93 mov r9,r11
- }
- }
- #else /* UDIV_NEEDS_NORMALIZATION */
- if (d1 == 0)
- 30: 8f 42 bf.s b8 <___moddi3+0xb8>
- 32: 66 83 mov r8,r6
- {
- if (d0 > n1)
- 34: 33 86 cmp/hi r8,r3
- 36: 8f 64 bf.s 102 <___moddi3+0x102>
- 38: 23 38 tst r3,r3
- {
- /* 0q = nn / 0D */
- count_leading_zeros (bm, d0);
- 3a: d1 85 mov.l 250 <___moddi3+0x250>,r1 ! ffff
- 3c: 33 16 cmp/hi r1,r3
- 3e: 89 01 bt 44 <___moddi3+0x44>
- 40: a0 9b bra 17a <___moddi3+0x17a>
- 42: 00 09 nop
- 44: d1 83 mov.l 254 <___moddi3+0x254>,r1 ! ffffff
- 46: 33 16 cmp/hi r1,r3
- 48: 8b 01 bf 4e <___moddi3+0x4e>
- 4a: a0 f5 bra 238 <___moddi3+0x238>
- 4c: e1 18 mov #24,r1
- 4e: e1 10 mov #16,r1
- 50: e2 10 mov #16,r2
- 52: 61 1b neg r1,r1
- 54: 60 73 mov r7,r0
- 56: 40 1d shld r1,r0
- 58: d1 7f mov.l 258 <___moddi3+0x258>,r1 ! 0 <___moddi3>
- 5a: 01 1c mov.b @(r0,r1),r1
- 5c: 61 1c extu.b r1,r1
- 5e: 31 2c add r2,r1
- 60: 61 1b neg r1,r1
- 62: 68 13 mov r1,r8
- 64: 78 20 add #32,r8
- if (bm != 0)
- 66: 28 88 tst r8,r8
- 68: 8f 02 bf.s 70 <___moddi3+0x70>
- 6a: 60 b3 mov r11,r0
- 6c: a0 05 bra 7a <___moddi3+0x7a>
- 6e: e8 00 mov #0,r8
- {
- /* Normalize, i.e. make the most significant bit of the
- denominator set. */
- d0 = d0 << bm;
- n1 = (n1 << bm) | (n0 >> (W_TYPE_SIZE - bm));
- 70: 46 8d shld r8,r6
- 72: 40 1d shld r1,r0
- if (bm != 0)
- {
- /* Normalize, i.e. make the most significant bit of the
- denominator set. */
- d0 = d0 << bm;
- 74: 47 8d shld r8,r7
- n1 = (n1 << bm) | (n0 >> (W_TYPE_SIZE - bm));
- n0 = n0 << bm;
- 76: 4b 8d shld r8,r11
- {
- /* Normalize, i.e. make the most significant bit of the
- denominator set. */
- d0 = d0 << bm;
- n1 = (n1 << bm) | (n0 >> (W_TYPE_SIZE - bm));
- 78: 26 0b or r0,r6
- n0 = n0 << bm;
- }
- udiv_qrnnd (q0, n0, n1, n0, d0);
- 7a: d9 78 mov.l 25c <___moddi3+0x25c>,r9 ! 0 <___moddi3>
- 7c: 60 63 mov r6,r0
- 7e: 65 73 mov r7,r5
- 80: 64 b9 swap.w r11,r4
- 82: 66 59 swap.w r5,r6
- 84: 49 0b jsr @r9
- 86: 46 28 shll16 r6
- 88: 64 49 swap.w r4,r4
- 8a: 49 0b jsr @r9
- 8c: 67 19 swap.w r1,r7
- 8e: 27 1b or r1,r7
- 90: 63 03 mov r0,r3
- /* Remainder in n0 >> bm. */
- }
- if (rp != 0)
- {
- rr.s.low = n0 >> bm;
- 92: 68 8b neg r8,r8
- rr.s.high = 0;
- *rp = rr.ll;
- 94: 61 33 mov r3,r1
- 96: 41 8d shld r8,r1
- 98: e0 00 mov #0,r0
- uu.ll = -uu.ll;
- if (vv.s.high < 0)
- vv.ll = -vv.ll;
- (void) __udivmoddi4 (uu.ll, vv.ll, (UDWtype*)&w);
- if (c)
- 9a: 2a a8 tst r10,r10
- 9c: 89 04 bt a8 <___moddi3+0xa8>
- 9e: 00 08 clrt
- w = -w;
- a0: 63 1a negc r1,r3
- a2: 62 0a negc r0,r2
- a4: 60 23 mov r2,r0
- a6: 61 33 mov r3,r1
- return w;
- }
- a8: 4f 26 lds.l @r15+,pr
- aa: 6d f6 mov.l @r15+,r13
- ac: 6c f6 mov.l @r15+,r12
- ae: 6b f6 mov.l @r15+,r11
- b0: 6a f6 mov.l @r15+,r10
- b2: 69 f6 mov.l @r15+,r9
- b4: 00 0b rts
- b6: 68 f6 mov.l @r15+,r8
- }
- #endif /* UDIV_NEEDS_NORMALIZATION */
- else
- {
- if (d1 > n1)
- b8: 32 86 cmp/hi r8,r2
- ba: 8f 02 bf.s c2 <___moddi3+0xc2>
- bc: 60 83 mov r8,r0
- /* Remainder in n1n0. */
- if (rp != 0)
- {
- rr.s.low = n0;
- rr.s.high = n1;
- *rp = rr.ll;
- be: af ec bra 9a <___moddi3+0x9a>
- c0: 61 93 mov r9,r1
- }
- else
- {
- /* 0q = NN / dd */
- count_leading_zeros (bm, d1);
- c2: d2 63 mov.l 250 <___moddi3+0x250>,r2 ! ffff
- c4: 31 26 cmp/hi r2,r1
- c6: 8b 5e bf 186 <___moddi3+0x186>
- c8: d2 62 mov.l 254 <___moddi3+0x254>,r2 ! ffffff
- ca: 31 26 cmp/hi r2,r1
- cc: 8b 01 bf d2 <___moddi3+0xd2>
- ce: a0 b8 bra 242 <___moddi3+0x242>
- d0: e2 18 mov #24,r2
- d2: e2 10 mov #16,r2
- d4: e5 10 mov #16,r5
- d6: 62 2b neg r2,r2
- d8: 60 13 mov r1,r0
- da: 40 2d shld r2,r0
- dc: d2 5e mov.l 258 <___moddi3+0x258>,r2 ! 0 <___moddi3>
- de: 03 2c mov.b @(r0,r2),r3
- e0: 63 3c extu.b r3,r3
- e2: 33 5c add r5,r3
- e4: 62 3b neg r3,r2
- e6: 68 23 mov r2,r8
- e8: 78 20 add #32,r8
- if (bm == 0)
- ea: 28 88 tst r8,r8
- ec: 8f 51 bf.s 192 <___moddi3+0x192>
- ee: 31 62 cmp/hs r6,r1
- This special case is necessary, not an optimization. */
- /* The condition on the next line takes advantage of that
- n1 >= d1 (true due to program flow). */
- if (n1 > d1 || n0 >= d0)
- f0: 8f 01 bf.s f6 <___moddi3+0xf6>
- f2: 37 b6 cmp/hi r11,r7
- f4: 89 02 bt fc <___moddi3+0xfc>
- {
- q0 = 1;
- sub_ddmmss (n1, n0, n1, n0, d1, d0);
- f6: 00 08 clrt
- f8: 3b 7a subc r7,r11
- fa: 36 1a subc r1,r6
- if (rp != 0)
- {
- rr.s.low = n0;
- rr.s.high = n1;
- *rp = rr.ll;
- fc: 60 63 mov r6,r0
- fe: af cc bra 9a <___moddi3+0x9a>
- 100: 61 b3 mov r11,r1
- }
- else
- {
- /* qq = NN / 0d */
- if (d0 == 0)
- 102: 8f 04 bf.s 10e <___moddi3+0x10e>
- 104: e4 01 mov #1,r4
- d0 = 1 / d0; /* Divide intentionally by zero. */
- 106: d7 56 mov.l 260 <___moddi3+0x260>,r7 ! 0 <___moddi3>
- 108: 47 0b jsr @r7
- 10a: e5 00 mov #0,r5
- 10c: 67 03 mov r0,r7
- count_leading_zeros (bm, d0);
- 10e: d1 50 mov.l 250 <___moddi3+0x250>,r1 ! ffff
- 110: 37 16 cmp/hi r1,r7
- 112: 8b 2c bf 16e <___moddi3+0x16e>
- 114: d1 4f mov.l 254 <___moddi3+0x254>,r1 ! ffffff
- 116: 37 16 cmp/hi r1,r7
- 118: 8b 01 bf 11e <___moddi3+0x11e>
- 11a: a0 8b bra 234 <___moddi3+0x234>
- 11c: e1 18 mov #24,r1
- 11e: e1 10 mov #16,r1
- 120: e2 10 mov #16,r2
- 122: 61 1b neg r1,r1
- 124: 60 73 mov r7,r0
- 126: 40 1d shld r1,r0
- 128: d1 4b mov.l 258 <___moddi3+0x258>,r1 ! 0 <___moddi3>
- 12a: 01 1c mov.b @(r0,r1),r1
- 12c: 61 1c extu.b r1,r1
- 12e: 31 2c add r2,r1
- 130: 61 1b neg r1,r1
- 132: 68 13 mov r1,r8
- 134: 78 20 add #32,r8
- if (bm == 0)
- 136: 28 88 tst r8,r8
- 138: 8f 5a bf.s 1f0 <___moddi3+0x1f0>
- 13a: 6c 63 mov r6,r12
- 13c: d9 47 mov.l 25c <___moddi3+0x25c>,r9 ! 0 <___moddi3>
- leading quotient digit q1 = 1).
- This special case is necessary, not an optimization.
- (Shifts counts of W_TYPE_SIZE are undefined.) */
- n1 -= d0;
- 13e: 60 63 mov r6,r0
- 140: 30 78 sub r7,r0
- udiv_qrnnd (q1, n1, n2, n1, d0);
- }
- /* n1 != d0... */
- udiv_qrnnd (q0, n0, n1, n0, d0);
- 142: 65 73 mov r7,r5
- 144: 64 b9 swap.w r11,r4
- 146: 66 59 swap.w r5,r6
- 148: 49 0b jsr @r9
- 14a: 46 28 shll16 r6
- 14c: 64 49 swap.w r4,r4
- 14e: 49 0b jsr @r9
- 150: 67 19 swap.w r1,r7
- 152: 27 1b or r1,r7
- 154: 63 03 mov r0,r3
- /* Remainder in n0 >> bm. */
- }
- if (rp != 0)
- {
- rr.s.low = n0 >> bm;
- 156: 68 8b neg r8,r8
- rr.s.high = 0;
- *rp = rr.ll;
- 158: 61 33 mov r3,r1
- 15a: e0 00 mov #0,r0
- 15c: af 9d bra 9a <___moddi3+0x9a>
- 15e: 41 8d shld r8,r1
- if (uu.s.high < 0)
- c = ~c,
- uu.ll = -uu.ll;
- if (vv.s.high < 0)
- vv.ll = -vv.ll;
- 160: 63 7a negc r7,r3
- 162: af 61 bra 28 <___moddi3+0x28>
- 164: 62 6a negc r6,r2
- DWunion vv = {.ll = v};
- DWtype w;
- if (uu.s.high < 0)
- c = ~c,
- uu.ll = -uu.ll;
- 166: 69 5a negc r5,r9
- 168: 68 4a negc r4,r8
- DWunion uu = {.ll = u};
- DWunion vv = {.ll = v};
- DWtype w;
- if (uu.s.high < 0)
- c = ~c,
- 16a: af 57 bra 1c <___moddi3+0x1c>
- 16c: ea ff mov #-1,r10
- /* qq = NN / 0d */
- if (d0 == 0)
- d0 = 1 / d0; /* Divide intentionally by zero. */
- count_leading_zeros (bm, d0);
- 16e: 91 6e mov.w 24e <___moddi3+0x24e>,r1 ! ff
- 170: 37 16 cmp/hi r1,r7
- 172: 89 59 bt 228 <___moddi3+0x228>
- 174: e1 00 mov #0,r1
- 176: af d4 bra 122 <___moddi3+0x122>
- 178: e2 00 mov #0,r2
- {
- if (d0 > n1)
- {
- /* 0q = nn / 0D */
- count_leading_zeros (bm, d0);
- 17a: 91 68 mov.w 24e <___moddi3+0x24e>,r1 ! ff
- 17c: 33 16 cmp/hi r1,r3
- 17e: 89 56 bt 22e <___moddi3+0x22e>
- 180: e1 00 mov #0,r1
- 182: af 67 bra 54 <___moddi3+0x54>
- 184: 61 1b neg r1,r1
- }
- else
- {
- /* 0q = NN / dd */
- count_leading_zeros (bm, d1);
- 186: 92 62 mov.w 24e <___moddi3+0x24e>,r2 ! ff
- 188: 31 26 cmp/hi r2,r1
- 18a: 89 57 bt 23c <___moddi3+0x23c>
- 18c: e2 00 mov #0,r2
- 18e: af a2 bra d6 <___moddi3+0xd6>
- 190: e5 00 mov #0,r5
- UWtype m1, m0;
- /* Normalize. */
- b = W_TYPE_SIZE - bm;
- d1 = (d1 << bm) | (d0 >> b);
- 192: 69 13 mov r1,r9
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- 194: 6c 63 mov r6,r12
- UWtype m1, m0;
- /* Normalize. */
- b = W_TYPE_SIZE - bm;
- d1 = (d1 << bm) | (d0 >> b);
- 196: 61 73 mov r7,r1
- 198: 41 2d shld r2,r1
- d0 = d0 << bm;
- n2 = n1 >> b;
- 19a: 46 2d shld r2,r6
- n1 = (n1 << bm) | (n0 >> b);
- n0 = n0 << bm;
- 19c: 6d b3 mov r11,r13
- UWtype m1, m0;
- /* Normalize. */
- b = W_TYPE_SIZE - bm;
- d1 = (d1 << bm) | (d0 >> b);
- 19e: 49 8d shld r8,r9
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- 1a0: 4b 2d shld r2,r11
- 1a2: 4c 8d shld r8,r12
- UWtype m1, m0;
- /* Normalize. */
- b = W_TYPE_SIZE - bm;
- d1 = (d1 << bm) | (d0 >> b);
- 1a4: 29 1b or r1,r9
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- 1a6: 2c bb or r11,r12
- n0 = n0 << bm;
- udiv_qrnnd (q0, n1, n2, n1, d1);
- 1a8: 60 63 mov r6,r0
- /* Normalize. */
- b = W_TYPE_SIZE - bm;
- d1 = (d1 << bm) | (d0 >> b);
- d0 = d0 << bm;
- 1aa: 47 8d shld r8,r7
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- n0 = n0 << bm;
- udiv_qrnnd (q0, n1, n2, n1, d1);
- 1ac: db 2b mov.l 25c <___moddi3+0x25c>,r11 ! 0 <___moddi3>
- 1ae: 65 93 mov r9,r5
- 1b0: 64 c9 swap.w r12,r4
- 1b2: 66 59 swap.w r5,r6
- 1b4: 4b 0b jsr @r11
- 1b6: 46 28 shll16 r6
- 1b8: 64 49 swap.w r4,r4
- 1ba: 4b 0b jsr @r11
- 1bc: 6c 19 swap.w r1,r12
- 1be: 2c 1b or r1,r12
- umul_ppmm (m1, m0, q0, d0);
- 1c0: 37 c5 dmulu.l r12,r7
- 1c2: 06 1a sts macl,r6
- 1c4: 0c 0a sts mach,r12
- if (m1 > n1 || (m1 == n1 && m0 > n0))
- 1c6: 30 c2 cmp/hs r12,r0
- d1 = (d1 << bm) | (d0 >> b);
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- n0 = n0 << bm;
- 1c8: 4d 8d shld r8,r13
- udiv_qrnnd (q0, n1, n2, n1, d1);
- umul_ppmm (m1, m0, q0, d0);
- 1ca: 61 c3 mov r12,r1
- if (m1 > n1 || (m1 == n1 && m0 > n0))
- 1cc: 8f 26 bf.s 21c <___moddi3+0x21c>
- 1ce: 62 63 mov r6,r2
- 1d0: 30 c0 cmp/eq r12,r0
- 1d2: 8d 38 bt.s 246 <___moddi3+0x246>
- 1d4: 3d 62 cmp/hs r6,r13
- /* Remainder in (n1n0 - m1m0) >> bm. */
- if (rp != 0)
- {
- sub_ddmmss (n1, n0, n1, n0, m1, m0);
- rr.s.low = (n1 << b) | (n0 >> bm);
- 1d6: 68 8b neg r8,r8
- q1 = 0;
- /* Remainder in (n1n0 - m1m0) >> bm. */
- if (rp != 0)
- {
- sub_ddmmss (n1, n0, n1, n0, m1, m0);
- 1d8: 66 03 mov r0,r6
- 1da: 00 08 clrt
- 1dc: 3d 2a subc r2,r13
- 1de: 36 1a subc r1,r6
- rr.s.low = (n1 << b) | (n0 >> bm);
- 1e0: 4d 8d shld r8,r13
- 1e2: 62 63 mov r6,r2
- 1e4: 42 3d shld r3,r2
- rr.s.high = n1 >> bm;
- *rp = rr.ll;
- 1e6: 60 63 mov r6,r0
- 1e8: 61 d3 mov r13,r1
- 1ea: 40 8d shld r8,r0
- 1ec: af 55 bra 9a <___moddi3+0x9a>
- 1ee: 21 2b or r2,r1
- /* Normalize. */
- b = W_TYPE_SIZE - bm;
- d0 = d0 << bm;
- n2 = n1 >> b;
- 1f0: 63 63 mov r6,r3
- n1 = (n1 << bm) | (n0 >> b);
- 1f2: 62 b3 mov r11,r2
- /* Normalize. */
- b = W_TYPE_SIZE - bm;
- d0 = d0 << bm;
- n2 = n1 >> b;
- 1f4: 43 1d shld r1,r3
- n1 = (n1 << bm) | (n0 >> b);
- n0 = n0 << bm;
- udiv_qrnnd (q1, n1, n2, n1, d0);
- 1f6: d9 19 mov.l 25c <___moddi3+0x25c>,r9 ! 0 <___moddi3>
- b = W_TYPE_SIZE - bm;
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- 1f8: 42 1d shld r1,r2
- 1fa: 4c 8d shld r8,r12
- {
- /* Normalize. */
- b = W_TYPE_SIZE - bm;
- d0 = d0 << bm;
- 1fc: 47 8d shld r8,r7
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- 1fe: 2c 2b or r2,r12
- n0 = n0 << bm;
- udiv_qrnnd (q1, n1, n2, n1, d0);
- 200: 60 33 mov r3,r0
- b = W_TYPE_SIZE - bm;
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- n0 = n0 << bm;
- 202: 4b 8d shld r8,r11
- udiv_qrnnd (q1, n1, n2, n1, d0);
- 204: 65 73 mov r7,r5
- 206: 64 c9 swap.w r12,r4
- 208: 66 59 swap.w r5,r6
- 20a: 49 0b jsr @r9
- 20c: 46 28 shll16 r6
- 20e: 64 49 swap.w r4,r4
- 210: 49 0b jsr @r9
- 212: 6c 19 swap.w r1,r12
- 214: 2c 1b or r1,r12
- 216: af 94 bra 142 <___moddi3+0x142>
- 218: 00 09 nop
- umul_ppmm (m1, m0, q0, d0);
- if (m1 > n1 || (m1 == n1 && m0 > n0))
- {
- q0--;
- sub_ddmmss (m1, m0, m1, m0, d1, d0);
- 21a: 61 c3 mov r12,r1
- 21c: 62 63 mov r6,r2
- 21e: 00 08 clrt
- 220: 32 7a subc r7,r2
- 222: 31 9a subc r9,r1
- /* Remainder in (n1n0 - m1m0) >> bm. */
- if (rp != 0)
- {
- sub_ddmmss (n1, n0, n1, n0, m1, m0);
- rr.s.low = (n1 << b) | (n0 >> bm);
- 224: af d8 bra 1d8 <___moddi3+0x1d8>
- 226: 68 8b neg r8,r8
- /* qq = NN / 0d */
- if (d0 == 0)
- d0 = 1 / d0; /* Divide intentionally by zero. */
- count_leading_zeros (bm, d0);
- 228: e1 08 mov #8,r1
- 22a: af 7a bra 122 <___moddi3+0x122>
- 22c: e2 08 mov #8,r2
- {
- if (d0 > n1)
- {
- /* 0q = nn / 0D */
- count_leading_zeros (bm, d0);
- 22e: e1 08 mov #8,r1
- 230: af 0f bra 52 <___moddi3+0x52>
- 232: e2 08 mov #8,r2
- /* qq = NN / 0d */
- if (d0 == 0)
- d0 = 1 / d0; /* Divide intentionally by zero. */
- count_leading_zeros (bm, d0);
- 234: af 75 bra 122 <___moddi3+0x122>
- 236: e2 18 mov #24,r2
- {
- if (d0 > n1)
- {
- /* 0q = nn / 0D */
- count_leading_zeros (bm, d0);
- 238: af 0b bra 52 <___moddi3+0x52>
- 23a: e2 18 mov #24,r2
- }
- else
- {
- /* 0q = NN / dd */
- count_leading_zeros (bm, d1);
- 23c: e2 08 mov #8,r2
- 23e: af 4a bra d6 <___moddi3+0xd6>
- 240: e5 08 mov #8,r5
- 242: af 48 bra d6 <___moddi3+0xd6>
- 244: e5 18 mov #24,r5
- n0 = n0 << bm;
- udiv_qrnnd (q0, n1, n2, n1, d1);
- umul_ppmm (m1, m0, q0, d0);
- if (m1 > n1 || (m1 == n1 && m0 > n0))
- 246: 8b e8 bf 21a <___moddi3+0x21a>
- 248: 61 03 mov r0,r1
- /* Remainder in (n1n0 - m1m0) >> bm. */
- if (rp != 0)
- {
- sub_ddmmss (n1, n0, n1, n0, m1, m0);
- rr.s.low = (n1 << b) | (n0 >> bm);
- 24a: af c5 bra 1d8 <___moddi3+0x1d8>
- 24c: 68 8b neg r8,r8
- 24e: 00 ff mac.l @r15+,@r0+
- 250: 00 00 .word 0x0000
- 252: ff ff .word 0xffff
- 254: 00 ff mac.l @r15+,@r0+
- 256: ff ff .word 0xffff
- ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement