delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/05/20/07:15:18.1

From: "Alexei A. Frounze" <alex DOT fru AT mtu-net DOT ru>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Inline ASM question...
Date: Sat, 20 May 2000 15:02:42 +0400
Organization: MTU-Intel ISP
Lines: 43
Message-ID: <392670D2.F8F19A3C@mtu-net.ru>
References: <8empao$5k6$1 AT nnrp02 DOT primenet DOT com>
<390ef9f9$0$72098 AT SSP1NO17 DOT highway DOT telekom DOT at>
<8emvhq$7mn$1 AT nnrp03 DOT primenet DOT com>
<3 DOT 0 DOT 6 DOT 32 DOT 20000505015633 DOT 007b2210 AT pop DOT crosswinds DOT net>
<3 DOT 0 DOT 6 DOT 32 DOT 20000510204858 DOT 007b6e40 AT pop DOT crosswinds DOT net>
<3 DOT 0 DOT 6 DOT 32 DOT 20000511021045 DOT 007af4a0 AT pop DOT crosswinds DOT net> <3 DOT 0 DOT 6 DOT 32 DOT 20000519211524 DOT 007c7290 AT pop DOT crosswinds DOT net>
NNTP-Posting-Host: ppp105-49.dialup.mtu-net.ru
Mime-Version: 1.0
X-Trace: gavrilo.mtu.ru 958820573 56955 212.188.105.49 (20 May 2000 11:02:53 GMT)
X-Complaints-To: usenet-abuse AT mtu DOT ru
NNTP-Posting-Date: 20 May 2000 11:02:53 GMT
X-Mailer: Mozilla 4.72 [en] (Win95; I)
X-Accept-Language: ru,en
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

I think you've got the same problem as I had a month ago. I also used "g"()
for everything. And that was incorrect. You should refer to 
  Brennan's Guide to Inline Assembly
and avoid the "g"() way described in
  DJGPP QuickAsm Programming Guide (I had a lot of trouble with it).

Both docs are located at DJGPP web-site.

-- 
Alexei A. Frounze
-----------------------------------------
Homepage: http://alexfru.chat.ru
Mirror:   http://members.xoom.com/alexfru

"Thomas J. Hruska" wrote:
> 
> Hello, I am doing that inline ASM thing...again.  The situation is that I
> am trying to speed up screen dumps from a buffer to the video buffer using
> far pointers.  The idea here is to perform the buffer copy using only one
> far pointer reference and a rep.  So, I loaded esi, edi, and ecx with the
> appropriate values (I hope).  After clearing the direction flag, I followed
> <sys/farptr.h>'s example for moving data (hence, the .byte 0x64).  However,
> the problem comes in that rep movsl (or movsd, movs, movll, movb, movsb,
> mobsbb, etc.) does not assemble.  The objective is to get the framerate up
> from 48 fps to 60 fps (maybe 70 fps) with this code.  NOTE:  The current
> selector is _dos_ds when the inline ASM executes (also, assume that y =
> 0x10000, x = screen_width * screen_height, x2 = 0).
> 
>       __asm__ __volatile__ ("
>         pushl %%esi
>         pushl %%edi
>         movl %0, %%esi
>         movl %1, %%edi
>         movl %2, %%ecx
>         cld
>         .byte 0x64
>         rep movsl
>         popl %%edi
>         popl %%esi"
>         :
>         : "g" (&CurrMode.Buffer[x2]), "g" (0xB0000 - y), "g" ((x - x2) %
> 0x10000));

- Raw text -


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