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


Groups > comp.lang.c > #4022

Re: Register storage type

From Eric Sosman <esosman@ieee-dot-org.invalid>
Newsgroups comp.lang.c
Subject Re: Register storage type
Date 2011-05-15 11:54 -0400
Organization A noiseless patient Spider
Message-ID <iqosvm$eap$1@dont-email.me> (permalink)
References (4 earlier) <_ZednX81cqTb9VDQnZ2dnUVZ_s-dnZ2d@bestweb.net> <iqk7t1$u3f$1@speranza.aioe.org> <ln1v02i5az.fsf@nuthaus.mib.org> <iqms36$vj1$1@speranza.aioe.org> <slrnisvjb4.34t.angel+news@pearlgates.net>

Show all headers | View raw


On 5/15/2011 8:56 AM, Angel wrote:
> On 2011-05-14, Free Willy<nospam@nospam.com>  wrote:
>>
>> Personally I think the C++ way is better than the C way - it avoids
>> problems if you try to assign more register variables than the machine
>> has registers available, effectively in C++ it sounds like the compiler
>> can "fall back" to discarding the register specification and treating it
>> like a normal stack variable should there be no register available.
>
> You weren't paying attention earlier. The compiler can and will ignore
> the "register" specification _whenever_ _it_ _wants_. There is no such
> thing as running out of registers, and no bad stuff will happen if there
> are less registers than there are variables with the "register"
> specification.

     Back in the day when compilers paid serious attention to `register',
"bad stuff" could indeed happen.  I recall two unpleasantesses:

     - The compiler might dutifully dedicate CPU registers to variables,
       making them unavailable for other uses.  This could cause even
       fairly simple expressions to fail to compile, if too few CPU
       registers remained to hold the intermediate results.

     - The compiler might generate extra code to save and restore the
       contents of registers dedicated to variables, or to deal with
       register scarcity for intermediate expression results.  This
       could easily slow things down by more than register-residence
       for the variables could speed them up.

     When compilers had to run in limited memory on slow machines,
they could not afford the kind of analysis they've been doing as a
matter of routine for the last twenty or twenty-five years.  In those
days, `register' was sometimes helpful -- although even then it was
quite tricky to employ it well.  It was a portable construct with a
non-portable effect.

>> I use the register keyword to tell the compiler that a variable is used a
>> lot eg as a loop index. What I "really want" is for the compiler to
>> optimize access to that variable - putting it in a register is only a
>> means to an end!
>
> Why are you so focussed on these micro-optimizations anyway? Let the
> compiler figure it out, modern compilers are smart enough to do it on
> their own for all but a few very limited cases.

     He's already been told this, by multiple people, but he's not
listening.

-- 
Eric Sosman
esosman@ieee-dot-org.invalid

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


Thread

Register storage type Free Willy <nospam@nospam.com> - 2011-05-12 20:55 +0000
  Re: Register storage type Kenneth Brody <kenbrody@spamcop.net> - 2011-05-12 17:02 -0400
    Re: Register storage type Free Willy <nospam@nospam.com> - 2011-05-12 21:13 +0000
      Re: Register storage type Angel <angel+news@spamcop.net> - 2011-05-12 21:20 +0000
      Re: Register storage type Keith Thompson <kst-u@mib.org> - 2011-05-12 14:27 -0700
        Re: Register storage type Kenneth Brody <kenbrody@spamcop.net> - 2011-05-13 13:20 -0400
          Re: Register storage type Free Willy <nospam@nospam.com> - 2011-05-13 21:30 +0000
            Re: Register storage type Keith Thompson <kst-u@mib.org> - 2011-05-13 15:50 -0700
              Different languages (Was: Register storage type) gazelle@shell.xmission.com (Kenny McCormack) - 2011-05-14 08:58 +0000
                Re: Different languages (Was: Register storage type) Dr Nick <3-nospam@temporary-address.org.uk> - 2011-05-14 10:09 +0100
              Re: Register storage type Free Willy <nospam@nospam.com> - 2011-05-14 21:27 +0000
                Re: Register storage type Ian Collins <ian-news@hotmail.com> - 2011-05-15 09:55 +1200
                Re: Register storage type Keith Thompson <kst-u@mib.org> - 2011-05-14 16:46 -0700
                Re: Register storage type Jens <jens.gustedt@gmail.com> - 2011-05-15 10:08 -0700
                Re: Register storage type James Kuyper <jameskuyper@verizon.net> - 2011-05-15 14:09 -0400
                Re: Register storage type David Thompson <dave.thompson2@verizon.net> - 2011-05-19 01:50 -0400
                Re: Register storage type Stephen Sprunk <stephen@sprunk.org> - 2011-05-15 00:27 -0500
                Re: Register storage type Angel <angel+news@spamcop.net> - 2011-05-15 12:56 +0000
                Re: Register storage type Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-05-15 11:54 -0400
                Re: Register storage type Seebs <usenet-nospam@seebs.net> - 2011-05-15 17:43 +0000
                Re: Register storage type Tim Rentsch <txr@alumni.caltech.edu> - 2011-05-18 23:37 -0700
                Re: Register storage type Seebs <usenet-nospam@seebs.net> - 2011-05-19 14:37 +0000
                Drift: Linguistics (was Re: Register storage type) Kenneth Brody <kenbrody@spamcop.net> - 2011-05-19 13:17 -0400
                Re: Register storage type Tim Rentsch <txr@alumni.caltech.edu> - 2011-05-19 11:05 -0700
                Re: Register storage type Seebs <usenet-nospam@seebs.net> - 2011-05-19 19:08 +0000
                Re: Register storage type Tim Rentsch <txr@alumni.caltech.edu> - 2011-05-24 00:39 -0700
                Re: Register storage type Ian Collins <ian-news@hotmail.com> - 2011-05-20 07:46 +1200
                Re: Register storage type Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-05-19 22:37 -0400
                Re: Register storage type Michael Press <rubrum@pacbell.net> - 2011-05-25 12:57 -0700
                Re: Register storage type pete <pfiland@mindspring.com> - 2011-05-15 09:09 -0400
      Re: Register storage type Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-05-12 21:57 -0400
  Re: Register storage type Angel <angel+news@spamcop.net> - 2011-05-12 21:14 +0000
    Re: Register storage type gordonb.unc3q@burditt.org (Gordon Burditt) - 2011-05-13 07:49 -0500
  Re: Register storage type Keith Thompson <kst-u@mib.org> - 2011-05-12 14:20 -0700
    Re: Register storage type Seebs <usenet-nospam@seebs.net> - 2011-05-12 21:59 +0000
      Re: Register storage type BGB <cr88192@hotmail.com> - 2011-05-12 15:50 -0700
      Re: Register storage type Keith Thompson <kst-u@mib.org> - 2011-05-12 15:49 -0700
        Re: Register storage type Seebs <usenet-nospam@seebs.net> - 2011-05-12 23:19 +0000
          Re: Register storage type Keith Thompson <kst-u@mib.org> - 2011-05-12 16:29 -0700
            Re: Register storage type Seebs <usenet-nospam@seebs.net> - 2011-05-13 00:15 +0000
  Re: Register storage type Columbus sailed the ocean China Blue <chine.bleu@yahoo.com> - 2011-05-12 15:24 -0700
  Re: Register storage type Peter Nilsson <airia@acay.com.au> - 2011-05-12 17:39 -0700

csiph-web