delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/10/28/10:03:55

Newsgroups: comp.os.msdos.djgpp
From: Eder James <st3edej AT doc DOT ntu DOT ac DOT uk>
Subject: ASM and graphics
Message-ID: <Pine.SUN.3.91.971028095034.688A-100000@chris>
Sender: news AT doc DOT ntu DOT ac DOT uk
Organization: The Nottingham Trent University, DOC.
Mime-Version: 1.0
Date: Tue, 28 Oct 1997 09:58:04 GMT
Lines: 38
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

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.

Regards,
Andy

- Raw text -


  webmaster     delorie software   privacy  
  Copyright 2019   by DJ Delorie     Updated Jul 2019