Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #15389

Re: code snippet

From Kaz Kylheku <kaz@kylheku.com>
Newsgroups comp.lang.c
Subject Re: code snippet
Date 2012-01-03 22:04 +0000
Organization A noiseless patient Spider
Message-ID <20120103132417.186@kylheku.com> (permalink)
References (15 earlier) <slrnjf6ocv.1rti.usenet-nospam@guild.seebs.net> <jcvrjq$feg$1@dont-email.me> <4F035609.2E6947C8@bytecraft.com> <20120103113739.535@kylheku.com> <4F036FE2.6B947764@bytecraft.com>

Show all headers | View raw


On 2012-01-03, Walter Banks <walter@bytecraft.com> wrote:
>
>
> Kaz Kylheku wrote:
>
>> > Very few as in some C compilers actually check that everything that can be
>> > done in asm can be done in C.
>>
>> Really? An example or two would go a long way here.
>
> http://bytecraft.com/C_versus_Assembly

In machine language, we can, for instance, disable interrupts, flush an
instruction cache, or save the registers to a stack. To show that everything
that can be done in assembly can be done in C, you have to show how these
things are done. The paper does not show such things.

The paper argues that in the domain of translating calculation formulas,
a compiler can select instructions as well as human programmer. (And that with
some extensions to C, like "char small @0x15;" or "registerx xreg;" we can even
coerce the selection of particular operands to match specific instances of
assembly language.)

This has not been controversial for decades; the paper belongs more in 1966, or
maybe 1976, than in 2006.

Still, even in this restricted domain, there are things compilers will
typically not do. For instance, select some very complex instructions, where it
is difficult to identify the pattern of C code which fits them exactly (but the
assembly language programmer can contrive the surrounding code to exploit the
CISC instruction). Or, custom microcoding: make your own machine language instruction and then use it.

Leveling the field between humans and compilers in this area required the
development of RISC architectures (in which you basically write microcode, so
there are no complex instructions that the programmer could use, and no lower
level microcode kernel to escape into to beat the compiler.)

These days, if you're finding that you can't beat the C compiler by coding in
assembly language, chances are it's in large part because the assembly language
is designed to work well as a target language for C compilers!  That has not
historically been the case. 

Because of the things that assembly language can do that C really cannot (by
design) assembly language is actually a better tool for bootstrapping a high
quality implementation of some high level languages.

For instance, the best quality Lisp implementations use very little or no C
internally, and, in particular, avoid compiling to C, or using C for run-time
code that is directly called from the language. You don't want the image of a
function, the basic unit of the program, to be controlled by a C compiler
because then you have all these uncertainties such as calling conventions,
register use, etc. that are only specific to a compiler, but specific to how a
given compiler is invoked.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-18 20:51 -0500
  Re: code snippet Geoff <geoff@invalid.invalid> - 2011-12-18 18:29 -0800
    Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-18 21:51 -0500
      Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-18 22:24 -0500
        Re: code snippet Geoff <geoff@invalid.invalid> - 2011-12-18 19:53 -0800
          Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-18 23:32 -0500
            Re: code snippet Geoff <geoff@invalid.invalid> - 2011-12-18 20:57 -0800
              Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-19 00:01 -0500
                Re: code snippet Geoff <geoff@invalid.invalid> - 2011-12-18 21:13 -0800
                Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-19 16:42 -0500
      Re: code snippet Keith Thompson <kst-u@mib.org> - 2011-12-18 20:14 -0800
        Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-18 23:27 -0500
      Re: code snippet Rui Maciel <rui.maciel@gmail.com> - 2011-12-19 12:33 +0000
        Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-19 16:33 -0500
          Re: code snippet Rui Maciel <rui.maciel@gmail.com> - 2011-12-20 00:20 +0000
            Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-19 19:46 -0500
              Re: code snippet Rui Maciel <rui.maciel@gmail.com> - 2011-12-20 01:14 +0000
                Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-20 15:51 -0500
                Re: code snippet Rui Maciel <rui.maciel@gmail.com> - 2011-12-21 14:11 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-21 07:03 -0800
                Re: code snippet Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-12-21 21:41 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-21 16:35 -0800
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 01:03 +0000
                Re: code snippet Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-12-22 03:19 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-22 07:11 -0800
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 16:59 +0000
                Re: code snippet "io_x" <a@b.c.invalid> - 2011-12-22 18:38 +0100
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-22 10:40 -0800
                Re: code snippet Markus Wichmann <nullplan@gmx.net> - 2011-12-22 19:12 +0100
                Re: code snippet Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-12-28 03:50 -0800
                Re: code snippet "io_x" <a@b.c.invalid> - 2011-12-28 17:06 +0100
                Re: code snippet "io_x" <a@b.c.invalid> - 2012-01-01 20:04 +0100
                Re: code snippet Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-01 12:38 -0800
                Re: code snippet "io_x" <a@b.c.invalid> - 2012-01-02 10:14 +0100
                Re: code snippet Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-03 04:56 -0800
                Re: code snippet "io_x" <a@b.c.invalid> - 2012-01-03 18:26 +0100
                Re: code snippet Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-04 00:09 -0800
                Re: code snippet Ian Collins <ian-news@hotmail.com> - 2012-01-04 21:53 +1300
                Re: code snippet "io_x" <a@b.c.invalid> - 2012-01-04 16:14 +0100
                Re: code snippet Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-01 12:28 -0800
                Re: code snippet "io_x" <a@b.c.invalid> - 2012-01-02 10:18 +0100
                Re: code snippet Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-03 04:56 -0800
                Re: code snippet "BartC" <bc@freeuk.com> - 2011-12-22 18:05 +0000
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 18:14 +0000
                Re: code snippet superpollo <superpollo@tznvy.pbz> - 2011-12-22 20:00 +0100
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 19:08 +0000
                Re: code snippet superpollo <superpollo@tznvy.pbz> - 2011-12-22 22:43 +0100
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 21:57 +0000
                Re: code snippet BruceS <bruces42@hotmail.com> - 2011-12-23 16:26 -0800
                Re: code snippet Rui Maciel <rui.maciel@gmail.com> - 2011-12-22 19:21 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-22 11:33 -0800
                Re: code snippet "io_x" <a@b.c.invalid> - 2011-12-23 09:10 +0100
                Re: code snippet Rui Maciel <rui.maciel@gmail.com> - 2011-12-23 14:43 +0000
                Re: code snippet Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-12-23 17:14 +0000
                Re: code snippet Keith Thompson <kst-u@mib.org> - 2011-12-23 12:10 -0800
                Re: code snippet Walter Banks <walter@bytecraft.com> - 2012-01-03 14:24 -0500
                Re: code snippet Kaz Kylheku <kaz@kylheku.com> - 2012-01-03 19:58 +0000
                Re: code snippet Walter Banks <walter@bytecraft.com> - 2012-01-03 16:15 -0500
                Re: code snippet blp@cs.stanford.edu (Ben Pfaff) - 2012-01-03 13:26 -0800
                Re: code snippet Kaz Kylheku <kaz@kylheku.com> - 2012-01-03 22:04 +0000
                Re: code snippet Ian Collins <ian-news@hotmail.com> - 2012-01-04 15:44 +1300
                Re: code snippet "BartC" <bc@freeuk.com> - 2012-01-04 23:34 +0000
                Re: code snippet James Harris <james.harris.1@googlemail.com> - 2012-01-04 15:57 -0800
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2012-01-05 23:34 -0800
                Re: code snippet Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-06 00:40 -0800
                Re: code snippet Kleuske <kleuske@nowhere.net> - 2012-01-06 10:33 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2012-01-06 04:30 -0800
                Re: code snippet Ian Collins <ian-news@hotmail.com> - 2012-01-04 15:37 +1300
                Re: code snippet Kaz Kylheku <kaz@kylheku.com> - 2012-01-04 03:37 +0000
                Re: code snippet Ian Collins <ian-news@hotmail.com> - 2012-01-04 20:23 +1300
                Re: code snippet jacob navia <jacob@spamsink.net> - 2011-12-22 18:26 +0100
                Re: code snippet Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-12-22 19:34 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-22 11:57 -0800
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 20:18 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-22 12:52 -0800
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 20:37 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-22 13:27 -0800
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 21:57 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-22 14:09 -0800
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 21:57 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-23 04:01 -0800
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-22 14:24 -0800
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-22 21:57 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2012-01-01 23:06 -0800
                Re: code snippet Hans Vlems <hvlems@freenet.de> - 2011-12-22 23:35 -0800
                Re: code snippet "BartC" <bc@freeuk.com> - 2011-12-23 12:26 +0000
                Re: code snippet jacob navia <jacob@spamsink.net> - 2011-12-23 18:32 +0100
                Re: code snippet Nick Keighley <nick_keighley_nospam@hotmail.com> - 2011-12-28 04:04 -0800
                Re: code snippet "io_x" <a@b.c.invalid> - 2011-12-23 09:10 +0100
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-25 11:13 -0800
                Re: code snippet Seebs <usenet-nospam@seebs.net> - 2011-12-25 19:31 +0000
                Re: code snippet Rui Maciel <rui.maciel@gmail.com> - 2011-12-26 21:53 +0000
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-26 16:10 -0800
                Re: code snippet Keith Thompson <kst-u@mib.org> - 2011-12-26 18:11 -0800
                Re: code snippet 88888 Dihedral <dihedral88888@googlemail.com> - 2011-12-26 23:56 -0800
                Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-20 15:57 -0500
                Re: code snippet Rui Maciel <rui.maciel@gmail.com> - 2011-12-21 12:39 +0000
                Re: code snippet Bill Reid <hormelfree@gmail.com> - 2011-12-22 15:29 -0800
          Re: code snippet Geoff <geoff@invalid.invalid> - 2011-12-19 19:19 -0800
            Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-20 13:51 -0500
              Re: code snippet Geoff <geoff@invalid.invalid> - 2011-12-20 11:08 -0800
  Re: code snippet Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-12-19 11:37 +0000
    Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-19 16:38 -0500
      Re: code snippet "Morris Keesan" <mkeesan@post.harvard.edu> - 2011-12-19 17:02 -0500
    Re: code snippet "Bill Cunningham" <nospam@nspam.invalid> - 2011-12-19 17:21 -0500
      Re: code snippet John Gordon <gordon@panix.com> - 2011-12-19 22:35 +0000

csiph-web