www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/08/20/03:42:31

Date: Thu, 20 Aug 1998 09:42:09 +0200
From: Hans-Bernhard Broeker <broeker AT physik DOT rwth-aachen DOT de>
Message-Id: <199808200742.JAA21449@acp3bf.physik.rwth-aachen.de>
To: GAMMELJL AT SLU DOT EDU
CC: djgpp AT delorie DOT com
Subject: Re: assembly language subroutines
Newsgroups: comp.os.msdos.djgpp
Organization: RWTH Aachen, III. physikalisches Institut B

In article <01J0S6CR6YJM94G7O9 AT SLU DOT EDU> you wrote:
[...]

Just to clear up some of the views, I've looked up the exact meaning
of 'enter' and 'leave' at home (in the TASM reference handbook).
So here it goes:

'enter $xx' is equivalent to 

	pushl %ebp
	subl $xx, %esp
	movl %esp, %ebp

and 'leave' (no arguments, at least up to i486) equals

	movl %ebp,%esp
	popl %ebp

In addition, the TASM reference mentions another form 'enter $xx,
$yy', but that seems to be too confusing to even describe it in a
sensible fashion.

The only reason for the existence of these opcodes seems to be that
they're shorter than the full sequence they substitute (--> save code
prefetch queue size). But on modern processors, (586 and up), with
their increasing emphasis on RISC rather than CISC instructions, they
got out of fashion.


--
Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de)
Even if all the snow were burnt, ashes would remain.

- Raw text -


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