On Wed, Oct 17, 2012 at 12:56 PM, Joe Mickley wrot= e: > I am using a dsPIC30F3012 (writing in ASM, not C) on a project with very > fast loop execution (<20 uSec in some cases) > and need an effecient 32 bit by 32 bit unsigned divide algorithm. The > dsPIC30F family has organic 16 by 16 divide > instruction (DIV.U and DIV.UD) and I would like to create a 32 by 32 usin= g > that instruction set. > > The traditional 32 by 32 divide using a shift/subtract (restoring) > algorithms is slow (about 400 instruction cycles nominal). It > should be possible to break the 32 by 32 into a set of 16 by 16 operation= s, > then combine the partials back into a 32 by 32 > result, but I lack the knowledge of how to do or drive this. The dsPIC30= F > divide routine is fast (18 cycles, so > any use of itshould have a marked improvement) > > I need an unsigned divide, but could live with a signed divide as the > magnitude of numbers I am working with are less than > 2^30. Remainder or lack of is not critical. If I need it I could derive= a > remainder externally to the routine. This is discussed in Section 9-2 of Hacker's Delight, 2nd edition. It is a page and a half of C code. >From the book: "The details are surprisingly complicated." You can read the code if go to the book's page at Amazon and "search inside this book" for "Multiword Division". But buy the book if you can. --=20 Regards, Mark markrages@gmail --=20 http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .