Date: Tue, 28 Oct 1997 19:16:12 -0800 (PST) Message-Id: <199710290316.TAA12777@adit.ap.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: Eder James , djgpp AT delorie DOT com From: Nate Eldredge Subject: Re: ASM and graphics Precedence: bulk At 09:58 10/28/1997 GMT, Eder James wrote: > >Hi, all. > >Got a quick question that I'm sure somebody can help me out with. > >I have implemented some graphics (mode 13h) functions using AT&T asm, an >example being a pixel plot function. > >To calculate the offset of the pixel to be drawn, the maths needed is along >the lines of : > >Offset = (Y * 320) + X > >The bit I'm interested in here is the (Y * 320) part of the equation. > >Which of the outlined partial implementations would prove the fastest in >terms of execution ? > >Using multiply.... > >movl _Y_Pos, %eax >imull $320, %eax > >...or using shift... > >movl _YPos, %eax >movl %eax, %ebx >shl $6, %ebx >shl $8, %eax >addl %ebx, %eax > >I would like to know which is the quicker as I believe the mul and div are >slow on the Intel Pentium processors. >Any help appreciated. Questions of this sort are always tough because instruction timings can differ greatly on different processors, and there are N different types out there. I would *guess* (no flames, please!) that the shifts would be faster. The very best way to find out is by trying it both ways and profiling. Nate Eldredge eldredge AT ap DOT net