Ou alrs une fonction asm a incorporer dans tigcc?
Merci d'avance...
(et me dites pad d'utilise sqrt....jamais vu un truc aussi lent

unsigned short SquareThib(unsigned long n) { unsigned short m, p, i, s; unsigned long q; if (!n) return 0; q= 1; s= 1; do { s+= s; q<<= 2; } while (q<=n); i= s >> 1; m= 0; do { p= m; m= (i + s) >> 1; if (m*m > n) s= m; else i= m; } while (m!=p); return m; }
SquareThib: move.l 4(a7),d0 beq.s Resultat0 movem.l d2-d5,-(a7) cmp.l #65536,d0 bhi.s Else1ST moveq #1,d1 moveq #1,d4 bra.s Repeat1ST Else1ST: moveq #1,d1 swap d1 move.l #256,d4 Repeat1ST: add.l d4,d4 lsl.l #2,d1 cmp.l d0,d1 bls.s Repeat1ST move.l d4,d3 lsr.l #1,d3 moveq #0,d1 Repeat2ST: move.l d1,d2 move.l d3,d1 add.l d4,d1 lsr.l #1,d1 move.l d1,d5 mulu d5,d5 cmp.l d0,d5 bls.s Else2ST move.l d1,d4 cmp.l d1,d2 bne.s Repeat2ST movem.l (a7)+,d2-d5 move.l d1,d0 rts Else2ST: move.l d1,d3 cmp.l d1,d2 bne.s Repeat2ST movem.l (a7)+,d2-d5 move.l d1,d0 rts Resultat0: moveq #0,d0 rts
section ".data" xdef SquareThib SquareThib: tst.l d1 beq.s Resultat0 movem.l d2-d5,-(a7) cmp.l #65536,d1 bhi.s Else1ST moveq #1,d0 moveq #1,d4 bra.s Repeat1ST Else1ST: moveq #1,d0 swap d0 move.l #256,d4 Repeat1ST: add.l d4,d4 lsl.l #2,d0 cmp.l d1,d0 bls.s Repeat1ST move.l d4,d3 lsr.l #1,d3 moveq #0,d0 Repeat2ST: move.l d0,d2 move.l d3,d0 add.l d4,d0 lsr.l #1,d0 move.l d0,d5 mulu d5,d5 cmp.l d1,d5 bls.s Else2ST move.l d0,d4 cmp.l d0,d2 bne.s Repeat2ST movem.l (a7)+,d2-d5 rts Else2ST: move.l d0,d3 cmp.l d0,d2 bne.s Repeat2ST movem.l (a7)+,d2-d5 rts Resultat0: moveq #0,d0 rts