From: Thomas Harte Newsgroups: comp.os.msdos.djgpp Subject: ASM Queries Date: Wed, 14 Oct 1998 23:27:02 +0100 Organization: BT Internet Lines: 30 Message-ID: <36252536.148EA3@btinternet.com> NNTP-Posting-Host: host5-171-231-215.btinternet.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 4.06 [en] (Win95; I) To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hi, I'm just playing around with extended inline assembler, and because I am using more variables than I can count on my fingers (bitchy moan there), I cannot afford the luxury of loading them all to registers. So what I though I would do is define my variables as : int r, g, b, radd, badd, gadd; Stick a pointer to r into a register, and get the others via memory adjustments. For example, if I put the pointer into eax then within my extended inline asm, shrl -4(%%eax) would find g and so on. Anyway, of course, this works fine if I do a normal compile. However, having regular C code around the extended assembler in the same source files, I could quite do with using optimisations. Which of course do not just leave a set of defined integers in memory contiguously . . . . so the -4(%%eax) gets something completely random. At least, this is what I think is going on . . . So what are my alternatives? Is there a standard way to do something like this such that the compiler understands I'd quite like the variables to be contiguous in memory - or should I be using different syntax? I'm fairly new to DJGPP inline, and I wasn't able to find anything in the FAQ (from faq202b - am I out of date?) nor the thing on Brennan's site . . . so thanks for any help. Feel free to forward. -Thomas