Related articles |
---|
[13 earlier articles] |
Re: Caller/Callee saved Registers paulb@travis.csd.harris.com (1994-03-24) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-24) |
Re: Caller/Callee saved Registers bart@cs.uoregon.edu (1994-03-25) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-25) |
Re: Caller/Callee saved Registers pardo@cs.washington.edu (1994-03-25) |
Re: Caller/Callee saved Registers zsh@cs.princeton.edu (1994-03-25) |
Re: Caller/Callee saved Registers law@fast.cs.utah.edu (1994-03-26) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-26) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-26) |
Re: Caller/Callee saved Registers hbaker@netcom.com (1994-03-26) |
Re: Caller/Callee saved Registers anton@mips.complang.tuwien.ac.at (1994-03-28) |
Re: Caller/Callee saved Registers zsh@cs.princeton.edu (1994-03-27) |
Re: Caller/Callee saved Registers pardo@cs.washington.edu (1994-03-28) |
[10 later articles] |
Newsgroups: | comp.compilers |
From: | law@fast.cs.utah.edu (Jeff Law) |
Keywords: | registers |
Organization: | University of Utah CS Dept |
References: | 94-03-054 94-03-106 |
Date: | Sat, 26 Mar 1994 01:01:13 GMT |
>which is passed as an argument (or stored into a data structure). I've
>been told that the HP Snake C compiler apparently makes a little 'stub'
>procedure for this case.
[moderator notes]
>all pointers aren't the same size, so compiler writers finesse it by
>making a procedure pointer actually point to a little stub that loads up
>the data pointer and jumps to the code. That's the second entry point.
All quite true for the PA. But there are other cases there procedures
may have multiple entry points on the PA.
1) Argument relocation stubs. These are used to make sure caller
and callee agree what registers hold arguments/return values. You'll
have to read the PA calling conventions closely to realize these
get used a great deal more than one would think.
2) Long-call stubs. The PA's instruction to perform function calls
only ask a +-256kb range (egad)!. When the instruction can't reach
the target, the linker makes an alternate entry for the target
(hopefully within reach of the caller :)
Jeff
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.