www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/02/18/13:45:40

From: ovek AT arcticnet DOT no (Ove Kaaven)
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Custom Stack?
Date: Mon, 17 Feb 1997 03:01:54 GMT
Organization: Vplan Programvare AS
Lines: 26
Message-ID: <5ecodg$f6j$1@troll.powertech.no>
References: <19970217 DOT 193154 DOT 4951 DOT 0 DOT chambersb AT juno DOT com>
NNTP-Posting-Host: alwayscold.darkness.arcticnet.no
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

chambersb AT juno DOT com (Benjamin D Chambers) wrote:

>Let's say I want to use my own buffer as a temporary stack (I would, of
>course, switch back to the main stack when I'm done).  Would I simply
>load %esp with the location of my buffer, plus the size if the buffer?

>Ie:
>int buf[10];
>int old;
>asm("
>	movl	%%esp,		(%%eax)
>	movl	%%ebx,		%%esp
>	addl	$40,		%%esp
> . .
>	movl	(%%eax),	%%esp
>"
>:: "a" (&old), "b" (buf):"memory");

The stack grows downwards. Try:

:: "a" (&old), "b" (&buf[10]) : "memory" );

The first value pushed should then be at buf[9], the next at buf[8],
etc.


- Raw text -


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