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> 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