delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/09/29/23:56:16

From: Chris Ho-Stuart <hostuart AT sky DOT fit DOT qut DOT edu DOT au>
Newsgroups: comp.os.msdos.djgpp
Subject: asm errors compiling grx
Date: 30 Sep 1999 03:25:08 GMT
Organization: Queensland University of Technology, Australia
Lines: 64
Distribution: world
Message-ID: <7sul6k$l1n$1@dove.qut.edu.au>
NNTP-Posting-Host: sky.fit.qut.edu.au
Mime-Version: 1.0
User-Agent: tin/pre-1.4-19990927 ("Nine While Nine") (UNIX) (SunOS/5.6 (sun4u))
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

I am trying to compile the grx library on a pentium166 WindowsNT box
using make from a dos command window.

I unzip the files for grx23, cd to the src directory, and run

make -f makefile.dj2

After lots of compilation it ends up with

gcc -c -O6 -Wall -fomit-frame-pointer -I. -I./include -I../include -I../addons/print -I../addons/bmp user/uellia.c -o user/uellia.o
Load error: no DOS memory.

But that is not the problem... I restart make, and it proceeds through
the uellia just fine the second time.

The real problem is at this point....

gcc -c -O6 -Wall -fomit-frame-pointer -I. -I./include -I../include -I../addons/print -I../addons/bmp utils/shiftscl.c -o utils/shiftscl.o
utils/shiftscl.c: In function `_GR_shift_scanline':
utils/shiftscl.c:48: Invalidm' statement:
utils/shiftscl.c:48: fixed or forbidden register 2 (cx) was spilled for class CREG.
utils/shiftscl.c:102: Invalidm' statement:
utils/shiftscl.c:102: fixed or forbidden register 2 (cx) was spilled for class CREG.
make.exe: *** [utils/shiftscl.o] Error 1

Any help gratefully accepted.

Further info...

Line 48 in utils/shiftscl.c is the asm statement in the following
context...

.
.
.
      GR_int8u far *d = *(dst++) + ws;
#     if defined(__GNUC__) && defined(__i386__)
        int w = ws;
        /* sad but true: the x86 bytesex forces this inefficient code :( */
        asm volatile ("\n"
          "   movb    (%3),%%ch    \n"
          "   jmp     1f           \n"
          "   .align  4,0x90       \n"
          "1: decl    %3           \n"
          "   movb    %%ch,%%al    \n"
          "   movb    (%3),%%ah    \n"
          "   movb    %%ah,%%ch    \n"
          "   shrl    %%cl,%%eax   \n"
          "   movb    %%al,(%4)    \n"
          "   decl    %4           \n"
          "   decl    %5           \n"
          "   jne     1b           \n"
          "   shrb    %%cl,%%ch    \n"
          "   movb    %%ch,(%4)      "
          : "=r" ((void *)s), "=r" ((void *)d), "=r" ((int)w)
          : "0" ((void *)s), "1" ((void *)d), "2" ((int)w), "c" ((int)shift)
          : "ax", "cx"
        );
#     elif defined(__TURBOC__)
.
.
.

Thanks -- Chris Ho-Stuart

- Raw text -


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