Re: "standard" C calling convention?

"Mike Ludwig" <>
9 Mar 2003 17:27:43 -0500

          From comp.compilers

Related articles
[9 earlier articles]
Re: "standard" C calling convention? (Andrew) (2003-02-21)
Re: "standard" C calling convention? (2003-02-24)
Re: "standard" C calling convention? (2003-02-24)
Re: "standard" C calling convention? (Glen Herrmannsfeldt) (2003-02-24)
Re: "standard" C calling convention? (Marco van de Voort) (2003-02-24)
Re: "standard" C calling convention? (2003-03-09)
Re: "standard" C calling convention? (Mike Ludwig) (2003-03-09)
Re: "standard" C calling convention? (2003-03-14)
| List of all articles for this month |

From: "Mike Ludwig" <>
Newsgroups: comp.compilers
Date: 9 Mar 2003 17:27:43 -0500
Organization: AT&T Broadband
References: 03-02-072 03-02-079 03-02-092 03-02-132
Keywords: C, history
Posted-Date: 09 Mar 2003 17:27:43 EST

> The first 'real' IBM C/370 (Toronto). While this was better
> that IBM's first C, it was as badly integrated with MVS as the
> others.
> The first near full-function C90 (Norcroft C, with the MVS port
> run ONLY at the University of Cambridge).
> IBM's first decent MVS product (and the first near full-function
> commercial one), Toronto C using CEL/370.
> Thereafter I lost track.

I came into the picture shortly after IBM's first 'real' C/370
compiler (early 90's) so I can not speak to the other mentioned

IBM's 'real' C compiler's starting in the late 80's use/used a calling
convention (I believe there is now an option to choose the calling
convention) that involved storing paramaters in memory and had an
upward growing stack. In the early/mid 90's C++ was introduced on the
370/390 - it was recognized that call overhead would be very important
so a new 'FSTLINK' calling convention was used. This calling
convention had the first few parameters passed in registers, special
leaf routine support and an upward stack.

As call performance was recoginzed as more and more important yet
again another calling convention was introduced, XPLINK. This was
designed in the late 90's and productized in the early 00's. The
highlights include register parameters, special leaf routine support,
downward growing stack with hardware overflow check, 'special' DLL
variable access support and compatibility with previous calling
conventions. If you are interested in details of the calling
contention it can be found at:

> ALL of those I named used wildly different calling sequences, ways
> of linking and interfaces to MVS.

You can always create a compiler (C or other) that use its own specific
internal calling convention.


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.