Message-Id: Comments: Authenticated sender is From: "Salvador Eduardo Tropea (SET)" Organization: INTI To: EDWARD CASHIN , djgpp AT delorie DOT com Date: Mon, 27 Jul 1998 14:48:24 +0000 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Re: implementation of modulo operator in djgpp In-reply-to: <199807271629.MAA14391@woodstock.cs.uga.edu> Precedence: bulk EDWARD CASHIN wrote: > Hello. I was just considering the case of a circular > buffer. Indexing the subscripts could be done with > something like this: > > /* subscripts: "front" is subscript of first stored value > "back" is subscript of last stored value > "last" is subscript of the last available > array spot */ > > front = (front + 1 > last) ? 0 : front + 1; > back = (back + 1 > last) ? 0 : back + 1; > > ...or you could say: > > front = (++front) % last; > back = (++back) % last; > > ...which begs the question, "How fast is the modulo?" > and more specifically, how is it implemented? Modulo is just the rest of a division. So if last is a variable (not a macro and not a constant) you'll get a div or idiv and that's sllloooowwww. But I think you must call gcc with -S to take a look at the generated assembler ;-) SET ------------------------------------ 0 -------------------------------- Visit my home page: http://set-soft.home.ml.org/ or http://www.geocities.com/SiliconValley/Vista/6552/ Salvador Eduardo Tropea (SET). (Electronics Engineer) Alternative e-mail: set-soft AT usa DOT net set AT computer DOT org ICQ: 2951574 Address: Curapaligue 2124, Caseros, 3 de Febrero Buenos Aires, (1678), ARGENTINA TE: +(541) 759 0013