delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/08/25/19:46:02

From: "Rylan" <rylan AT intekom DOT co DOT za>
Newsgroups: comp.os.msdos.djgpp
Subject: as internal declarations - gfx demo
Date: Tue, 25 Aug 1998 23:15:47 +0200
Organization: The South African Internet Exchange
Lines: 44
Message-ID: <6rvag9$82e$3@news2.saix.net>
Reply-To: "Rylan" <rylan AT inbtekom DOT co DOT za>
NNTP-Posting-Host: pc25-01-p15.saix.net
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Hi,

I recently converted a real mode graphics demo (a shadebob effect) to DJGPP
using NASM - the NASM module is simply an instruction by instruction
conversion of the real mode assembler program with adjusted adressing for
protected mode of course.

Then, I felt interested in doing an AT&T format conversion.... BOOM! It does
not work at all - by that I mean that I have VERY carefully checked each
line of code, and I am sure that each one corresponds correctly to the
original NASM version. The AT&T version runs 100% fine and compiles
perfectly, the only thing is it looks wrong! I then had GCC output the .S
file for the effect. Now, the NASM module had two include files that
included byte and word sized arrays of data for the graphics effect (sine
and cosine tables) I translated these to C include files, using "unsigned
int" for "dw" and "unsigned char" for "db" like it was used for NASM.
However, in .S file just mentioned, GCC has pre-assembler-processed these db
and dw "equivalents" (that is "unsigned int" and "unsigned char") into just
AS format .long declarations. .long? I thus suspect that the effect is not
working right because some of the variables for the cosine and sine tables
are not in the correct size - i. e. what has to be stored in a byte for it
to actually represent the correct value is now stored in a double word -
.long = long integer? And that this is the reason the effect is snarfing
off? A "movb [20]sintab,%ah" (never mind if this is not valid at&t, only for
illustration)thus pulls the wrong stuff out of the array that the assembly
pre-processor considers a dword ".long"? Or the incrementation loop has to
be adjusted to add 4 bytes (dword sized data) between each access of a
supposedly byte sized table that is now running as a dword sized table?

Is this possible? How can I force AS to declare ".byte" and ".word" (to use
direct analogy to ".long"?) Can this be the error? The NASM version runs
fine, so it MUST work under DJPGG - only the AT&T one includes the data for
the sine and cosine as .H - and then in the resultant .S is uses them as
.long.

Any ideas? Please reply by mail if at all possible.

FANX!!!!

--
Spawned By Rylan
Is truth beauty or beauty truth?


- Raw text -


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