Related articles |
---|
Optimizing in assembly language rhyde@transdimension.com (Randall Hyde) (2001-03-01) |
Re: Optimizing in assembly language sunni@speakeasy.net (Shankar Unni) (2001-03-04) |
Re: Optimizing in assembly language sunni@speakeasy.net (Shankar Unni) (2001-03-26) |
C as assembly language joachim_d@gmx.de (Joachim Durchholz) (2001-04-04) |
Re: C as assembly language eodell@c1220335-a.potlnd1.or.home.com (2001-04-10) |
Re: C as assembly language andi@complang.tuwien.ac.at (2001-04-10) |
Re: C as assembly language jmorris2@twcny.rr.com (Morrisett) (2001-04-10) |
Re: C as assembly language jacob@jacob.remcomp.fr (jacob navia) (2001-04-10) |
Re: C as assembly language felixundduni@freenet.de (felix) (2001-04-10) |
Re: C as assembly language fjh@cs.mu.OZ.AU (2001-04-10) |
Re: C as assembly language fjh@cs.mu.OZ.AU (2001-04-12) |
Re: C as assembly language vbdis@aol.com (2001-04-12) |
[11 later articles] |
From: | andi@complang.tuwien.ac.at (Andreas Krall) |
Newsgroups: | comp.compilers |
Date: | 10 Apr 2001 01:20:34 -0400 |
Organization: | Vienna University of Technology, Austria |
References: | 01-03-006 01-03-046 01-03-130 01-04-027 |
Keywords: | C |
Posted-Date: | 10 Apr 2001 01:20:34 EDT |
"Joachim Durchholz" <joachim_d@gmx.de> writes:
> Hmm... there are a few additional cases where C is simply inappropriate:
...
>
> Oh, and slightly off-topic, there are a few other things that annoy
> those who want to use C as a backend for their compiler:
> 3) It has no support for tail call recursion.
> 4) It has no support for automatic garbage collection.
> (The following are from http://www.cminusminus.org/faq.html:)
> 5) It cannot return multiple values in registers
> 6) It cannot bind global variables to registers
Here you mix up the language definition of C with current
implementions of C compilers. Some C compilers do not implement the
above mentioned features, but many implement proper tail call
recursion, structs and unions returns in registers and interprocedural
register allocation. One of my students has implemented proper tail
recursion for GCC for the x86 and the Alpha backend. His master thesis
and the code will be available very soon from our web server.
ad 4) There is always the Boehm/Weiser GC
ad 5)
Just read the calling conventions for differnt compilers, e.g.: SGI
calling conventions:
A struct with only one or two floating point fields is returned in $f0
(and $f2 if needed).
Any other struct or union results of at most 128 bits are returned in $2
and $3 (remainder if necessary).
--
andi@complang.tuwien.ac.at Andreas Krall
http://www.complang.tuwien.ac.at/andi/ Inst. f. Computersprachen, TU Wien
tel: (+431) 58801/18511 Argentinierstr. 8/4/1851
fax: (+431) 58801/18598 A-1040 Wien AUSTRIA EUROPE
Return to the
comp.compilers page.
Search the
comp.compilers archives again.