www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/12/06/03:43:59

Date: Sun, 6 Dec 1998 10:43:37 +0200 (IST)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
X-Sender: eliz AT is
To: Tal Lavi <ranla AT post DOT tau DOT ac DOT il>
cc: djgpp AT delorie DOT com
Subject: Re: Extended ASM (Was: misc questions)
In-Reply-To: <ranla.148.0003E15E@post.tau.ac.il>
Message-ID: <Pine.SUN.3.91.981206104315.28436I-100000@is>
MIME-Version: 1.0
Reply-To: djgpp AT delorie DOT com

On Fri, 4 Dec 1998, Tal Lavi wrote:

> I need a FlushPage routine(macro?) for a 640x480x16bpp mode written in asm.
> Until now, I used a C(++) routine which uses _farsetsel & _farnspokel.

Why would you need to reinvent the wheel?  There is already a function
called `movedata' in the library, which moves buffers with "REP MOVSL",
and my guess is you can't beat it by a large margin anyway.

The FAQ says in section 18.4 that either `movedata' or `dosmemput' are
the appropriate tools to move large buffers to or from the
conventional memory.

> > sys/farptr.h uses a byte constant 
> > because early versions of Gas didn't support prefixes (I'm not sure how 
> > the things are with Binutils 2.8.1).
> 
> Why should you write(and know) the opcode? Isn't there an ASM
> instruction for that purpose? (movl %something, %%fs(%something))?

I thought I explained exactly that: because early versions of Gas had
bugs in assemblying such instructions.

- Raw text -


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