From: jbs30000 AT aol DOT com (Joel) Newsgroups: comp.os.msdos.djgpp Subject: Re: Inline assembly error Date: 8 Aug 2003 21:24:22 -0700 Organization: http://groups.google.com/ Lines: 41 Message-ID: <84e4e2a9.0308082024.59e5816b@posting.google.com> References: <84e4e2a9 DOT 0308072140 DOT 47872db2 AT posting DOT google DOT com> NNTP-Posting-Host: 205.188.208.170 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: posting.google.com 1060403062 4402 127.0.0.1 (9 Aug 2003 04:24:22 GMT) X-Complaints-To: groups-abuse AT google DOT com NNTP-Posting-Date: 9 Aug 2003 04:24:22 GMT To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com jbs30000 AT aol DOT com (Joel) wrote in message news:<84e4e2a9 DOT 0308072140 DOT 47872db2 AT posting DOT google DOT com>... > One of the SVGA graphics routines I'm making has given me an inline > error message. > What I'm doing is making a routine to call the protected mode verson > of > Function 9 -Set/Get Palette Data > BL = 0 - Set Palette Data / 80H Set Palette Data During Vertical > Retrace > CX = Number of Palette Registers to Update > DX = First of the Palette Registers to Update > ES:EDI = Table of Palette Values > So, here's my routine > unsigned short PM_Palette_Data(unsigned char Flag, unsigned short > PCount, unsigned short FirstPal, unsigned short TableSeg, unsigned > long TableOff) > { > asm("movw %%ax, %%es\n\t" > "call *%0" > : > : "r" (PMPaletteData), "b" (Flag), "C" (PCount), "a" > (TableSeg), "D" (TableOff) > ); > } > > And here's the error I get > Error: inconsistent operand constraints in an `asm' > Referring of course, to the "movw %%ax, %%es\n\t" > I'm not sure why this is happening. movw is move word ax and es are > words, although maybe it's confusing es as esi, but then what would I > use to represent ES? > Anyway, I'm still getting use to AT&T style DJGPP extended inline > assembly, so any help is appreciated. Thanks. All right, nobody is answering me, so it must be that the answer is obvious, and you're waiting for me to figure it out on my own. But going over everything, I shouldn't be having a problem. movw moves words, and ax and es are words. I used two %% with each register which is required in extended inline assembly. The source and dest are in the correct order, movw %%ax, %%es should move ax into ex, and I put the required \n\t at the end since I had two lines of assembly. So, I have no clue what's wrong.