diff options
Diffstat (limited to 'mcon/U/registers.U')
-rw-r--r-- | mcon/U/registers.U | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/mcon/U/registers.U b/mcon/U/registers.U new file mode 100644 index 0000000..344ceed --- /dev/null +++ b/mcon/U/registers.U @@ -0,0 +1,103 @@ +?RCS: $Id$ +?RCS: +?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 4.0. +?RCS: +?RCS: $Log: registers.U,v $ +?RCS: Revision 3.0.1.2 1997/02/28 16:19:41 ram +?RCS: patch61: removed empty ?LINT lines +?RCS: +?RCS: Revision 3.0.1.1 1994/10/29 16:28:33 ram +?RCS: patch36: call ./Cppsym explicitely instead of relying on PATH +?RCS: +?RCS: Revision 3.0 1993/08/18 12:09:41 ram +?RCS: Baseline for dist 3.0 netwide release. +?RCS: +?MAKE:registers reg1 reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11 \ + reg12 reg13 reg14 reg15 reg16: awk rm Cppsym Myread Oldconfig +?MAKE: -pick add $@ %< +?S:registers: +?S: This variable contains the number of register declarations paid +?S: attention to by the C compiler. +?S:. +?S:reg1: +?S: This variable, along with reg2, reg3, etc. contains the eventual +?S: value for the symbols register1, register2, register3, etc. It has +?S: either the value "register" or is null. +?S:. +?C:register1: +?C: This symbol, along with register2, register3, etc. is either the word +?C: "register" or null, depending on whether the C compiler pays attention +?C: to this many register declarations. The intent is that you don't have +?C: to order your register declarations in the order of importance, so you +?C: can freely declare register variables in sub-blocks of code and as +?C: function parameters. Do not use register<n> more than once per routine. +?C:. +?LINT:describe reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11 +?LINT:describe reg12 reg13 reg14 reg15 reg16 +?LINT:known register2 register3 register4 register5 register6 register7 +?LINT:known register8 register9 register10 register11 register12 register13 +?LINT:known register14 register15 register16 +?H:#define register1 $reg1 /**/ +?H:#define register2 $reg2 /**/ +?H:#define register3 $reg3 /**/ +?H:#define register4 $reg4 /**/ +?H:#define register5 $reg5 /**/ +?H:#define register6 $reg6 /**/ +?H:#define register7 $reg7 /**/ +?H:#define register8 $reg8 /**/ +?H:#define register9 $reg9 /**/ +?H:#define register10 $reg10 /**/ +?H:#define register11 $reg11 /**/ +?H:#define register12 $reg12 /**/ +?H:#define register13 $reg13 /**/ +?H:#define register14 $reg14 /**/ +?H:#define register15 $reg15 /**/ +?H:#define register16 $reg16 /**/ +?H:. +?F:!.foo +: see how many register declarations we want to use +case "$registers" in +'') + if ./Cppsym vax; then + dflt=6 + elif ./Cppsym sun mc68000 mips; then + dflt=10 + elif ./Cppsym pyr; then + dflt=14 + elif ./Cppsym ns32000 ns16000; then + dflt=5 + elif ./Cppsym $smallmach; then + dflt=3 + else + : if you have any other numbers for me, please send them in + dflt=6 + fi;; +*) dflt=$registers ;; +esac +?LINT:set reg2 reg3 reg4 reg5 reg6 reg7 reg8 reg9 reg10 reg11 +?LINT:set reg12 reg13 reg14 reg15 reg16 +cat <<EOM + +Different C compilers on different machines pay attention to different numbers +of register declarations. About how many register declarations in each routine +does your C compiler pay attention to? (OK to guess) + +EOM +rp="Maximum register declarations?" +. ./myread +registers=$ans +reg1='' +$awk "BEGIN { for (i=1; i<=16; i++) printf \"reg%d=''\n\", i}" \ + </dev/null >.foo +. ./.foo +$awk "BEGIN { for (i=1; i<=$registers; i++) printf \"reg%d=register\n\", i}" \ + </dev/null >.foo +. ./.foo +$rm -f .foo + |