delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/01/20/07:49:46

From: eplmst AT lu DOT erisoft DOT se (Martin Stromberg)
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Bug in __dpmi_simulate_real_mode_procedure_retf_stack
Date: 20 Jan 2000 09:56:34 GMT
Organization: Ericsson Erisoft AB, Sweden
Lines: 35
Message-ID: <866m4i$qk$2@antares.lu.erisoft.se>
References: <13001ab4 DOT 241463ff AT usw-ex0101-008 DOT remarq DOT com> <Pine DOT SUN DOT 3 DOT 91 DOT 1000120092708 DOT 21977T-100000 AT is>
NNTP-Posting-Host: spica-144.lu.erisoft.se
X-Newsreader: TIN [version 1.2 PL2]
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Eli Zaretskii (eliz AT is DOT elta DOT co DOT il) wrote:

: On Wed, 19 Jan 2000, Nigel Pattinson wrote:

: > 	/* Set up %esi, %edi to copy data to the PM stack. */
: > 	subl	%ecx, %esp
: > 	movl	%esp, %edi
: > 	movl	ARG3, %esi
: > 
: > 	/* Copy the data. */
: > 	cld
: > 	rep
: > 	movsw
: > 
: > Since the size of the parameters (in ecx) is in 16-bit words, it looks
: > to me like the line
: > 
: > 	subl	%ecx, %esp
: > 
: > only reserves half the required amount of stack space.

: But the copy of the data to the stack (see above) *also* uses words:
: it copies with "rep movsw".  So it moves ECX words to the stack, and
: that's exactly the amount of storage reserved there by subl.

: So where exactly is the problem here?

Say ecx is 2, then "subl    %ecx, %esp" will decrease esp with 2,
right? Then "movsw" will copiy 4 bytes, right? That's double than what
was reserved.


Right,

							MartinS

- Raw text -


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