delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2003/08/08/02:28:24

From: jbs30000 AT aol DOT com (Joel)
Newsgroups: comp.os.msdos.djgpp
Subject: Inline assembly error
Date: 7 Aug 2003 22:40:34 -0700
Organization: http://groups.google.com/
Lines: 31
Message-ID: <84e4e2a9.0308072140.47872db2@posting.google.com>
NNTP-Posting-Host: 172.156.91.5
X-Trace: posting.google.com 1060321235 13584 127.0.0.1 (8 Aug 2003 05:40:35 GMT)
X-Complaints-To: groups-abuse AT google DOT com
NNTP-Posting-Date: 8 Aug 2003 05:40:35 GMT
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie 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.

- Raw text -


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