1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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 License,
?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 License; 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 explicitly 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
|