C as assembly language

"Joachim Durchholz" <joachim_d@gmx.de>
4 Apr 2001 00:26:00 -0400

          From comp.compilers

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)
[13 later articles]
| List of all articles for this month |
From: "Joachim Durchholz" <joachim_d@gmx.de>
Newsgroups: comp.compilers
Date: 4 Apr 2001 00:26:00 -0400
Organization: Compilers Central
References: 01-03-006 01-03-046 01-03-130
Keywords: C
Posted-Date: 04 Apr 2001 00:25:59 EDT

Shankar Unni <sunni@speakeasy.net> wrote:
>
> The only place where it makes sense to do this is if you have to
> write snippets of code that either does not fit into a standard C
> model (usually interleaving assembly inside regular C code), or
> touches registers or other resources that fall outside the usual
> "registers and memory" model, *AND* and you want to be able to do
> at least some instruction rearranging around or even through the
> assembly code.


Hmm... there are a few additional cases where C is simply inappropriate:
1) You want to check for integer overflow.
2) You need exceptions.


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
7) It has no support for lightweight concurrency


Not all of these features are required for each language, but many
(most?) languages need at least one of them.


Regards,
Joachim


Post a followup to this message

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