0000: 0a 0a 0a 56 41 43 41 4c 4c 28 33 29 20 20 20 20 ...VACALL(3)
0010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0030: 20 20 20 20 20 20 20 20 20 20 20 56 41 43 41 4c VACAL
0040: 4c 28 33 29 0a 0a 0a 4e 08 4e 41 08 41 4d 08 4d L(3)...N.NA.AM.M
0050: 45 08 45 0a 20 20 20 20 20 20 20 76 61 63 61 6c E.E. vacal
0060: 6c 20 2d 20 43 20 66 75 6e 63 74 69 6f 6e 73 20 l - C functions
0070: 63 61 6c 6c 65 64 20 77 69 74 68 20 76 61 72 69 called with vari
0080: 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 73 0a 0a able arguments..
0090: 53 08 53 59 08 59 4e 08 4e 4f 08 4f 50 08 50 53 S.SY.YN.NO.OP.PS
00a0: 08 53 49 08 49 53 08 53 0a 20 20 20 20 20 20 20 .SI.IS.S.
00b0: 23 08 23 69 08 69 6e 08 6e 63 08 63 6c 08 6c 75 #.#i.in.nc.cl.lu
00c0: 08 75 64 08 64 65 08 65 20 3c 08 3c 76 08 76 61 .ud.de.e <.<v.va
00d0: 08 61 63 08 63 61 08 61 6c 08 6c 6c 08 6c 2e 08 .ac.ca.al.ll.l..
00e0: 2e 68 08 68 3e 08 3e 0a 0a 20 20 20 20 20 20 20 .h.h>.>..
00f0: 65 08 65 78 08 78 74 08 74 65 08 65 72 08 72 6e e.ex.xt.te.er.rn
0100: 08 6e 20 76 08 76 6f 08 6f 69 08 69 64 08 64 2a .n v.vo.oi.id.d*
0110: 08 2a 20 76 08 76 61 08 61 63 08 63 61 08 61 6c .* v.va.ac.ca.al
0120: 08 6c 6c 08 6c 5f 08 5f 66 08 66 75 08 75 6e 08 .ll.l_._f.fu.un.
0130: 6e 63 08 63 74 08 74 69 08 69 6f 08 6f 6e 08 6e nc.ct.ti.io.on.n
0140: 3b 08 3b 0a 0a 20 20 20 20 20 20 20 76 08 76 6f ;.;.. v.vo
0150: 08 6f 69 08 69 64 08 64 20 5f 08 66 5f 08 75 5f .oi.id.d _.f_.u_
0160: 08 6e 5f 08 63 5f 08 74 5f 08 69 5f 08 6f 5f 08 .n_.c_.t_.i_.o_.
0170: 6e 20 28 08 28 5f 08 61 5f 08 6c 5f 08 69 5f 08 n (.(_.a_.l_.i_.
0180: 73 5f 08 74 29 08 29 0a 20 20 20 20 20 20 20 20 s_.t).).
0190: 20 76 08 76 61 08 61 5f 08 5f 61 08 61 6c 08 6c v.va.a_._a.al.l
01a0: 69 08 69 73 08 73 74 08 74 20 5f 08 61 5f 08 6c i.is.st.t _.a_.l
01b0: 5f 08 69 5f 08 73 5f 08 74 3b 08 3b 0a 20 20 20 _.i_.s_.t;.;.
01c0: 20 20 20 20 7b 08 7b 0a 20 20 20 20 20 20 20 20 {.{.
01d0: 20 76 08 76 61 08 61 5f 08 5f 73 08 73 74 08 74 v.va.a_._s.st.t
01e0: 61 08 61 72 08 72 74 08 74 5f 08 5f 5f 08 74 5f a.ar.rt.t_.__.t_
01f0: 08 79 5f 08 70 5f 08 65 28 08 28 5f 08 61 5f 08 .y_.p_.e(.(_.a_.
0200: 6c 5f 08 69 5f 08 73 5f 08 74 5b 08 5b 2c 08 2c l_.i_.s_.t[.[,.,
0210: 20 5f 08 72 5f 08 65 5f 08 74 5f 08 75 5f 08 72 _.r_.e_.t_.u_.r
0220: 5f 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f _.n_.__.t_.y_.p_
0230: 08 65 5d 08 5d 29 08 29 3b 08 3b 0a 20 20 20 20 .e].]).);.;.
0240: 20 20 20 20 20 5f 08 61 5f 08 72 5f 08 67 20 3d _.a_.r_.g =
0250: 08 3d 20 76 08 76 61 08 61 5f 08 5f 61 08 61 72 .= v.va.a_._a.ar
0260: 08 72 67 08 67 5f 08 5f 5f 08 74 5f 08 79 5f 08 .rg.g_.__.t_.y_.
0270: 70 5f 08 65 28 08 28 5f 08 61 5f 08 6c 5f 08 69 p_.e(.(_.a_.l_.i
0280: 5f 08 73 5f 08 74 5b 08 5b 2c 08 2c 20 5f 08 61 _.s_.t[.[,., _.a
0290: 5f 08 72 5f 08 67 5f 08 5f 5f 08 74 5f 08 79 5f _.r_.g_.__.t_.y_
02a0: 08 70 5f 08 65 5d 08 5d 29 08 29 3b 08 3b 0a 20 .p_.e].]).);.;.
02b0: 20 20 20 20 20 20 20 20 76 08 76 61 08 61 5f 08 v.va.a_.
02c0: 5f 72 08 72 65 08 65 74 08 74 75 08 75 72 08 72 _r.re.et.tu.ur.r
02d0: 6e 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f n.n_.__.t_.y_.p_
02e0: 08 65 28 08 28 5f 08 61 5f 08 6c 5f 08 69 5f 08 .e(.(_.a_.l_.i_.
02f0: 73 5f 08 74 5b 08 5b 5b 08 5b 2c 08 2c 20 5f 08 s_.t[.[[.[,., _.
0300: 72 5f 08 65 5f 08 74 5f 08 75 5f 08 72 5f 08 6e r_.e_.t_.u_.r_.n
0310: 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5d _.__.t_.y_.p_.e]
0320: 08 5d 2c 08 2c 20 5f 08 72 5f 08 65 5f 08 74 5f .],., _.r_.e_.t_
0330: 08 75 5f 08 72 5f 08 6e 5f 08 5f 5f 08 76 5f 08 .u_.r_.n_.__.v_.
0340: 61 5f 08 6c 5f 08 75 5f 08 65 5d 08 5d 29 08 29 a_.l_.u_.e].]).)
0350: 3b 08 3b 0a 20 20 20 20 20 20 20 7d 08 7d 0a 0a ;.;. }.}..
0360: 20 20 20 20 20 20 20 76 08 76 61 08 61 63 08 63 v.va.ac.c
0370: 61 08 61 6c 08 6c 6c 08 6c 5f 08 5f 66 08 66 75 a.al.ll.l_._f.fu
0380: 08 75 6e 08 6e 63 08 63 74 08 74 69 08 69 6f 08 .un.nc.ct.ti.io.
0390: 6f 6e 08 6e 20 3d 08 3d 20 5f 08 26 5f 08 66 5f on.n =.= _.&_.f_
03a0: 08 75 5f 08 6e 5f 08 63 5f 08 74 5f 08 69 5f 08 .u_.n_.c_.t_.i_.
03b0: 6f 5f 08 6e 3b 08 3b 0a 0a 20 20 20 20 20 20 20 o_.n;.;..
03c0: 5f 08 76 5f 08 61 5f 08 6c 20 3d 08 3d 20 28 08 _.v_.a_.l =.= (.
03d0: 28 28 08 28 5f 08 72 5f 08 65 5f 08 74 5f 08 75 ((.(_.r_.e_.t_.u
03e0: 5f 08 72 5f 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f _.r_.n_.__.t_.y_
03f0: 08 70 5f 08 65 20 28 08 28 2a 08 2a 29 08 29 20 .p_.e (.(*.*).)
0400: 28 08 28 29 08 29 29 08 29 20 76 08 76 61 08 61 (.().)).) v.va.a
0410: 63 08 63 61 08 61 6c 08 6c 6c 08 6c 29 08 29 20 c.ca.al.ll.l).)
0420: 28 08 28 5f 08 61 5f 08 72 5f 08 67 5f 08 31 2c (.(_.a_.r_.g_.1,
0430: 08 2c 5f 08 61 5f 08 72 5f 08 67 5f 08 32 2c 08 .,_.a_.r_.g_.2,.
0440: 2c 5f 08 2e 5f 08 2e 5f 08 2e 29 08 29 3b 08 3b ,_.._.._..).);.;
0450: 0a 0a 44 08 44 45 08 45 53 08 53 43 08 43 52 08 ..D.DE.ES.SC.CR.
0460: 52 49 08 49 50 08 50 54 08 54 49 08 49 4f 08 4f RI.IP.PT.TI.IO.O
0470: 4e 08 4e 0a 20 20 20 20 20 20 20 54 68 69 73 20 N.N. This
0480: 20 73 65 74 20 20 6f 66 20 20 6d 61 63 72 6f 73 set of macros
0490: 20 20 70 65 72 6d 69 74 20 20 61 20 43 20 66 75 permit a C fu
04a0: 6e 63 74 69 6f 6e 20 5f 08 66 5f 08 75 5f 08 6e nction _.f_.u_.n
04b0: 5f 08 63 5f 08 74 5f 08 69 5f 08 6f 5f 08 6e 20 _.c_.t_.i_.o_.n
04c0: 74 6f 20 62 65 0a 20 20 20 20 20 20 20 63 61 6c to be. cal
04d0: 6c 65 64 20 77 69 74 68 20 76 61 72 69 61 62 6c led with variabl
04e0: 65 20 20 61 72 67 75 6d 65 6e 74 73 20 20 61 6e e arguments an
04f0: 64 20 20 74 6f 20 20 72 65 74 75 72 6e 20 20 76 d to return v
0500: 61 72 69 61 62 6c 65 0a 20 20 20 20 20 20 20 72 ariable. r
0510: 65 74 75 72 6e 20 76 61 6c 75 65 73 2e 20 20 54 eturn values. T
0520: 68 69 73 20 69 73 20 6d 75 63 68 20 6c 69 6b 65 his is much like
0530: 20 74 68 65 20 76 08 76 61 08 61 72 08 72 61 08 the v.va.ar.ra.
0540: 61 72 08 72 67 08 67 73 08 73 28 33 29 20 66 61 ar.rg.gs.s(3) fa
0550: 63 69 6c 69 74 79 2c 0a 20 20 20 20 20 20 20 62 cility,. b
0560: 75 74 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 74 ut also allows t
0570: 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 he return value
0580: 74 6f 20 62 65 20 20 73 70 65 63 69 66 69 65 64 to be specified
0590: 20 20 61 74 20 20 72 75 6e 0a 20 20 20 20 20 20 at run.
05a0: 20 74 69 6d 65 2e 0a 0a 20 20 20 20 20 20 20 46 time... F
05b0: 75 6e 63 74 69 6f 6e 20 20 63 61 6c 6c 69 6e 67 unction calling
05c0: 20 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 20 64 69 conventions di
05d0: 66 66 65 72 20 63 6f 6e 73 69 64 65 72 61 62 6c ffer considerabl
05e0: 79 20 6f 6e 20 64 69 66 2d 0a 20 20 20 20 20 20 y on dif-.
05f0: 20 66 65 72 65 6e 74 20 6d 61 63 68 69 6e 65 73 ferent machines
0600: 2c 20 20 61 6e 64 20 20 5f 08 76 5f 08 61 5f 08 , and _.v_.a_.
0610: 63 5f 08 61 5f 08 6c 5f 08 6c 20 20 61 74 74 65 c_.a_.l_.l atte
0620: 6d 70 74 73 20 20 74 6f 20 20 70 72 6f 76 69 64 mpts to provid
0630: 65 20 20 73 6f 6d 65 0a 20 20 20 20 20 20 20 64 e some. d
0640: 65 67 72 65 65 20 6f 66 20 69 73 6f 6c 61 74 69 egree of isolati
0650: 6f 6e 20 66 72 6f 6d 20 73 75 63 68 20 61 72 63 on from such arc
0660: 68 69 74 65 63 74 75 72 65 20 64 65 70 65 6e 64 hitecture depend
0670: 65 6e 63 69 65 73 2e 0a 0a 20 20 20 20 20 20 20 encies...
0680: 54 68 65 20 20 66 75 6e 63 74 69 6f 6e 20 20 74 The function t
0690: 68 61 74 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 hat can be calle
06a0: 64 20 77 69 74 68 20 61 6e 79 20 6e 75 6d 62 65 d with any numbe
06b0: 72 20 61 6e 64 20 74 79 70 65 0a 20 20 20 20 20 r and type.
06c0: 20 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 61 of arguments a
06d0: 6e 64 20 77 68 69 63 68 20 77 69 6c 6c 20 20 72 nd which will r
06e0: 65 74 75 72 6e 20 20 61 6e 79 20 20 74 79 70 65 eturn any type
06f0: 20 20 6f 66 20 20 72 65 74 75 72 6e 0a 20 20 20 of return.
0700: 20 20 20 20 76 61 6c 75 65 20 69 73 20 76 08 76 value is v.v
0710: 61 08 61 63 08 63 61 08 61 6c 08 6c 6c 08 6c 2e a.ac.ca.al.ll.l.
0720: 20 20 49 74 20 77 69 6c 6c 20 64 6f 20 73 6f 6d It will do som
0730: 65 20 6d 61 67 69 63 20 61 6e 64 20 63 61 6c 6c e magic and call
0740: 20 74 68 65 20 66 75 6e 63 2d 0a 20 20 20 20 20 the func-.
0750: 20 20 74 69 6f 6e 20 73 74 6f 72 65 64 20 69 6e tion stored in
0760: 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 76 08 the variable v.
0770: 76 61 08 61 63 08 63 61 08 61 6c 08 6c 6c 08 6c va.ac.ca.al.ll.l
0780: 5f 08 5f 66 08 66 75 08 75 6e 08 6e 63 08 63 74 _._f.fu.un.nc.ct
0790: 08 74 69 08 69 6f 08 6f 6e 08 6e 2e 20 20 49 66 .ti.io.on.n. If
07a0: 20 79 6f 75 20 20 77 61 6e 74 0a 20 20 20 20 20 you want.
07b0: 20 20 74 6f 20 6d 61 6b 65 20 6d 6f 72 65 20 74 to make more t
07c0: 68 61 6e 20 6f 6e 65 20 75 73 65 20 6f 66 20 5f han one use of _
07d0: 08 76 5f 08 61 5f 08 63 5f 08 61 5f 08 6c 5f 08 .v_.a_.c_.a_.l_.
07e0: 6c 2c 20 75 73 65 20 74 68 65 20 5f 08 74 5f 08 l, use the _.t_.
07f0: 72 5f 08 61 5f 08 6d 5f 08 70 5f 08 6f 5f 08 6c r_.a_.m_.p_.o_.l
0800: 5f 08 69 5f 08 6e 5f 08 65 28 33 29 0a 20 20 20 _.i_.n_.e(3).
0810: 20 20 20 20 66 61 63 69 6c 69 74 79 20 74 6f 20 facility to
0820: 20 73 74 6f 72 65 20 20 5f 08 26 5f 08 66 5f 08 store _.&_.f_.
0830: 75 5f 08 6e 5f 08 63 5f 08 74 5f 08 69 5f 08 6f u_.n_.c_.t_.i_.o
0840: 5f 08 6e 20 20 69 6e 74 6f 20 20 76 08 76 61 08 _.n into v.va.
0850: 61 63 08 63 61 08 61 6c 08 6c 6c 08 6c 5f 08 5f ac.ca.al.ll.l_._
0860: 66 08 66 75 08 75 6e 08 6e 63 08 63 74 08 74 69 f.fu.un.nc.ct.ti
0870: 08 69 6f 08 6f 6e 08 6e 20 20 6a 75 73 74 0a 20 .io.on.n just.
0880: 20 20 20 20 20 20 62 65 66 6f 72 65 20 63 61 6c before cal
0890: 6c 69 6e 67 20 76 08 76 61 08 61 63 08 63 61 08 ling v.va.ac.ca.
08a0: 61 6c 08 6c 6c 08 6c 2e 0a 0a 20 20 20 20 20 20 al.ll.l...
08b0: 20 57 69 74 68 69 6e 20 20 5f 08 66 5f 08 75 5f Within _.f_.u_
08c0: 08 6e 5f 08 63 5f 08 74 5f 08 69 5f 08 6f 5f 08 .n_.c_.t_.i_.o_.
08d0: 6e 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 n, the following
08e0: 20 6d 61 63 72 6f 73 20 63 61 6e 20 62 65 20 75 macros can be u
08f0: 73 65 64 20 74 6f 20 77 61 6c 6b 0a 20 20 20 20 sed to walk.
0900: 20 20 20 74 68 72 6f 75 67 68 20 74 68 65 20 61 through the a
0910: 72 67 75 6d 65 6e 74 20 6c 69 73 74 20 61 6e 64 rgument list and
0920: 20 73 70 65 63 69 66 79 20 61 20 72 65 74 75 72 specify a retur
0930: 6e 20 76 61 6c 75 65 3a 0a 0a 20 20 20 20 20 20 n value:..
0940: 20 76 08 76 61 08 61 5f 08 5f 73 08 73 74 08 74 v.va.a_._s.st.t
0950: 61 08 61 72 08 72 74 08 74 5f 08 5f 5f 08 74 5f a.ar.rt.t_.__.t_
0960: 08 79 5f 08 70 5f 08 65 28 08 28 5f 08 61 5f 08 .y_.p_.e(.(_.a_.
0970: 6c 5f 08 69 5f 08 73 5f 08 74 5b 08 5b 2c 08 2c l_.i_.s_.t[.[,.,
0980: 20 5f 08 72 5f 08 65 5f 08 74 5f 08 75 5f 08 72 _.r_.e_.t_.u_.r
0990: 5f 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f _.n_.__.t_.y_.p_
09a0: 08 65 5d 08 5d 29 08 29 3b 08 3b 0a 20 20 20 20 .e].]).);.;.
09b0: 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 73 starts
09c0: 20 74 68 65 20 77 61 6c 6b 20 74 68 72 6f 75 67 the walk throug
09d0: 68 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c h the argument l
09e0: 69 73 74 20 61 6e 64 20 73 70 65 63 2d 0a 20 20 ist and spec-.
09f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 69 65 ifie
0a00: 73 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 70 s the return typ
0a10: 65 2e 0a 0a 20 20 20 20 20 20 20 5f 08 61 5f 08 e... _.a_.
0a20: 72 5f 08 67 20 3d 08 3d 20 76 08 76 61 08 61 5f r_.g =.= v.va.a_
0a30: 08 5f 61 08 61 72 08 72 67 08 67 5f 08 5f 5f 08 ._a.ar.rg.g_.__.
0a40: 74 5f 08 79 5f 08 70 5f 08 65 28 08 28 5f 08 61 t_.y_.p_.e(.(_.a
0a50: 5f 08 6c 5f 08 69 5f 08 73 5f 08 74 5b 08 5b 2c _.l_.i_.s_.t[.[,
0a60: 08 2c 20 5f 08 61 5f 08 72 5f 08 67 5f 08 5f 5f ., _.a_.r_.g_.__
0a70: 08 74 5f 08 79 5f 08 70 5f 08 65 5d 08 5d 29 08 .t_.y_.p_.e].]).
0a80: 29 3b 08 3b 0a 20 20 20 20 20 20 20 20 20 20 20 );.;.
0a90: 20 20 20 66 65 74 63 68 65 73 20 74 68 65 20 6e fetches the n
0aa0: 65 78 74 20 61 72 67 75 6d 65 6e 74 20 66 72 6f ext argument fro
0ab0: 6d 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c m the argument l
0ac0: 69 73 74 2e 0a 0a 20 20 20 20 20 20 20 76 08 76 ist... v.v
0ad0: 61 08 61 5f 08 5f 72 08 72 65 08 65 74 08 74 75 a.a_._r.re.et.tu
0ae0: 08 75 72 08 72 6e 08 6e 5f 08 5f 5f 08 74 5f 08 .ur.rn.n_.__.t_.
0af0: 79 5f 08 70 5f 08 65 28 08 28 5f 08 61 5f 08 6c y_.p_.e(.(_.a_.l
0b00: 5f 08 69 5f 08 73 5f 08 74 5b 08 5b 5b 08 5b 2c _.i_.s_.t[.[[.[,
0b10: 08 2c 20 5f 08 72 5f 08 65 5f 08 74 5f 08 75 5f ., _.r_.e_.t_.u_
0b20: 08 72 5f 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 .r_.n_.__.t_.y_.
0b30: 70 5f 08 65 5d 08 5d 2c 08 2c 20 5f 08 72 5f 08 p_.e].],., _.r_.
0b40: 65 5f 08 74 5f 08 75 5f 08 72 5f 08 6e 5f 08 5f e_.t_.u_.r_.n_._
0b50: 5f 08 76 5f 08 61 5f 08 6c 5f 08 75 5f 08 65 5d _.v_.a_.l_.u_.e]
0b60: 08 5d 29 08 29 3b 08 3b 0a 20 20 20 20 20 20 20 .]).);.;.
0b70: 20 20 20 20 20 20 20 65 6e 64 73 20 20 74 68 65 ends the
0b80: 20 77 61 6c 6b 20 74 68 72 6f 75 67 68 20 74 68 walk through th
0b90: 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 20 e argument list
0ba0: 61 6e 64 20 73 70 65 63 69 2d 0a 20 20 20 20 20 and speci-.
0bb0: 20 20 20 20 20 20 20 20 20 66 69 65 73 20 74 68 fies th
0bc0: 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 0a e return value..
0bd0: 0a 20 20 20 20 20 20 20 54 68 65 20 5f 08 74 5f . The _.t_
0be0: 08 79 5f 08 70 5f 08 65 20 69 6e 20 76 08 76 61 .y_.p_.e in v.va
0bf0: 08 61 5f 08 5f 73 08 73 74 08 74 61 08 61 72 08 .a_._s.st.ta.ar.
0c00: 72 74 08 74 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 rt.t_.__.t_.y_.p
0c10: 5f 08 65 20 61 6e 64 20 76 08 76 61 08 61 5f 08 _.e and v.va.a_.
0c20: 5f 72 08 72 65 08 65 74 08 74 75 08 75 72 08 72 _r.re.et.tu.ur.r
0c30: 6e 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f n.n_.__.t_.y_.p_
0c40: 08 65 20 73 68 61 6c 6c 20 62 65 20 20 6f 6e 65 .e shall be one
0c50: 0a 0a 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....
0c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 31 34 20 14
0c70: 4a 61 6e 75 61 72 79 20 32 30 30 31 20 20 20 20 January 2001
0c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0c90: 20 20 20 20 31 0a 0a 0a 0a 0a 0a 56 41 43 41 4c 1......VACAL
0ca0: 4c 28 33 29 20 20 20 20 20 20 20 20 20 20 20 20 L(3)
0cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0cd0: 20 20 20 56 41 43 41 4c 4c 28 33 29 0a 0a 0a 20 VACALL(3)...
0ce0: 20 20 20 20 20 20 6f 66 20 76 08 76 6f 08 6f 69 of v.vo.oi
0cf0: 08 69 64 08 64 2c 20 69 08 69 6e 08 6e 74 08 74 .id.d, i.in.nt.t
0d00: 2c 20 75 08 75 69 08 69 6e 08 6e 74 08 74 2c 20 , u.ui.in.nt.t,
0d10: 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 2c 20 75 08 l.lo.on.ng.g, u.
0d20: 75 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 2c 20 6c ul.lo.on.ng.g, l
0d30: 08 6c 6f 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f 08 .lo.on.ng.gl.lo.
0d40: 6f 6e 08 6e 67 08 67 2c 20 75 08 75 6c 08 6c 6f on.ng.g, u.ul.lo
0d50: 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f 08 6f 6e 08 .on.ng.gl.lo.on.
0d60: 6e 67 08 67 2c 20 64 08 64 6f 08 6f 75 08 75 2d ng.g, d.do.ou.u-
0d70: 08 2d 0a 20 20 20 20 20 20 20 62 08 62 6c 08 6c .-. b.bl.l
0d80: 65 08 65 2c 20 73 08 73 74 08 74 72 08 72 75 08 e.e, s.st.tr.ru.
0d90: 75 63 08 63 74 08 74 2c 20 70 08 70 74 08 74 72 uc.ct.t, p.pt.tr
0da0: 08 72 20 6f 72 20 28 66 6f 72 20 41 4e 53 49 20 .r or (for ANSI
0db0: 43 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e C calling conven
0dc0: 74 69 6f 6e 73 20 20 6f 6e 6c 79 29 0a 20 20 20 tions only).
0dd0: 20 20 20 20 63 08 63 68 08 68 61 08 61 72 08 72 c.ch.ha.ar.r
0de0: 2c 20 73 08 73 63 08 63 68 08 68 61 08 61 72 08 , s.sc.ch.ha.ar.
0df0: 72 2c 20 75 08 75 63 08 63 68 08 68 61 08 61 72 r, u.uc.ch.ha.ar
0e00: 08 72 2c 20 73 08 73 68 08 68 6f 08 6f 72 08 72 .r, s.sh.ho.or.r
0e10: 74 08 74 2c 20 75 08 75 73 08 73 68 08 68 6f 08 t.t, u.us.sh.ho.
0e20: 6f 72 08 72 74 08 74 2c 20 66 08 66 6c 08 6c 6f or.rt.t, f.fl.lo
0e30: 08 6f 61 08 61 74 08 74 2c 20 64 65 70 65 6e 64 .oa.at.t, depend
0e40: 69 6e 67 20 6f 6e 20 74 68 65 0a 20 20 20 20 20 ing on the.
0e50: 20 20 63 6c 61 73 73 20 6f 66 20 5f 08 72 5f 08 class of _.r_.
0e60: 65 5f 08 74 5f 08 75 5f 08 72 5f 08 6e 5f 08 5f e_.t_.u_.r_.n_._
0e70: 5f 08 74 5f 08 79 5f 08 70 5f 08 65 2e 0a 0a 20 _.t_.y_.p_.e...
0e80: 20 20 20 20 20 20 54 68 65 20 5f 08 74 5f 08 79 The _.t_.y
0e90: 5f 08 70 5f 08 65 20 73 70 65 63 69 66 69 65 72 _.p_.e specifier
0ea0: 73 20 69 6e 20 20 76 08 76 61 08 61 5f 08 5f 73 s in v.va.a_._s
0eb0: 08 73 74 08 74 61 08 61 72 08 72 74 08 74 5f 08 .st.ta.ar.rt.t_.
0ec0: 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 65 20 20 61 __.t_.y_.p_.e a
0ed0: 6e 64 20 20 76 08 76 61 08 61 5f 08 5f 72 08 72 nd v.va.a_._r.r
0ee0: 65 08 65 74 08 74 75 08 75 72 08 72 6e 08 6e 5f e.et.tu.ur.rn.n_
0ef0: 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 65 0a 20 .__.t_.y_.p_.e.
0f00: 20 20 20 20 20 20 6d 75 73 74 20 20 62 65 20 20 must be
0f10: 74 68 65 20 20 73 61 6d 65 2e 20 20 54 68 65 20 the same. The
0f20: 5f 08 72 5f 08 65 5f 08 74 5f 08 75 5f 08 72 5f _.r_.e_.t_.u_.r_
0f30: 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 70 5f 08 .n_.__.t_.y_.p_.
0f40: 65 20 73 70 65 63 69 66 69 65 72 73 20 70 61 73 e specifiers pas
0f50: 73 65 64 20 74 6f 0a 20 20 20 20 20 20 20 76 08 sed to. v.
0f60: 76 61 08 61 5f 08 5f 73 08 73 74 08 74 61 08 61 va.a_._s.st.ta.a
0f70: 72 08 72 74 08 74 5f 08 5f 5f 08 74 5f 08 79 5f r.rt.t_.__.t_.y_
0f80: 08 70 5f 08 65 20 61 6e 64 20 76 08 76 61 08 61 .p_.e and v.va.a
0f90: 5f 08 5f 72 08 72 65 08 65 74 08 74 75 08 75 72 _._r.re.et.tu.ur
0fa0: 08 72 6e 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 .rn.n_.__.t_.y_.
0fb0: 70 5f 08 65 20 6d 75 73 74 20 62 65 20 74 68 65 p_.e must be the
0fc0: 20 73 61 6d 65 2e 0a 0a 20 20 20 20 20 20 20 54 same... T
0fd0: 68 65 20 5f 08 74 5f 08 79 5f 08 70 5f 08 65 20 he _.t_.y_.p_.e
0fe0: 69 6e 20 76 08 76 61 08 61 5f 08 5f 61 08 61 72 in v.va.a_._a.ar
0ff0: 08 72 67 08 67 5f 08 5f 5f 08 74 5f 08 79 5f 08 .rg.g_.__.t_.y_.
1000: 70 5f 08 65 20 73 68 61 6c 6c 20 62 65 20 6f 6e p_.e shall be on
1010: 65 20 6f 66 20 69 08 69 6e 08 6e 74 08 74 2c 20 e of i.in.nt.t,
1020: 20 75 08 75 69 08 69 6e 08 6e 74 08 74 2c 20 20 u.ui.in.nt.t,
1030: 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 2c 0a 20 20 l.lo.on.ng.g,.
1040: 20 20 20 20 20 75 08 75 6c 08 6c 6f 08 6f 6e 08 u.ul.lo.on.
1050: 6e 67 08 67 2c 20 20 6c 08 6c 6f 08 6f 6e 08 6e ng.g, l.lo.on.n
1060: 67 08 67 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 2c g.gl.lo.on.ng.g,
1070: 20 20 75 08 75 6c 08 6c 6f 08 6f 6e 08 6e 67 08 u.ul.lo.on.ng.
1080: 67 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 2c 20 20 gl.lo.on.ng.g,
1090: 64 08 64 6f 08 6f 75 08 75 62 08 62 6c 08 6c 65 d.do.ou.ub.bl.le
10a0: 08 65 2c 20 73 08 73 74 08 74 72 08 72 75 08 75 .e, s.st.tr.ru.u
10b0: 63 08 63 74 08 74 2c 20 70 08 70 74 08 74 72 08 c.ct.t, p.pt.tr.
10c0: 72 20 6f 72 20 28 66 6f 72 0a 20 20 20 20 20 20 r or (for.
10d0: 20 41 4e 53 49 20 43 20 20 63 61 6c 6c 69 6e 67 ANSI C calling
10e0: 20 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 20 20 6f conventions o
10f0: 6e 6c 79 29 20 20 63 08 63 68 08 68 61 08 61 72 nly) c.ch.ha.ar
1100: 08 72 2c 20 20 73 08 73 63 08 63 68 08 68 61 08 .r, s.sc.ch.ha.
1110: 61 72 08 72 2c 20 20 75 08 75 63 08 63 68 08 68 ar.r, u.uc.ch.h
1120: 61 08 61 72 08 72 2c 0a 20 20 20 20 20 20 20 73 a.ar.r,. s
1130: 08 73 68 08 68 6f 08 6f 72 08 72 74 08 74 2c 20 .sh.ho.or.rt.t,
1140: 20 75 08 75 73 08 73 68 08 68 6f 08 6f 72 08 72 u.us.sh.ho.or.r
1150: 74 08 74 2c 20 66 08 66 6c 08 6c 6f 08 6f 61 08 t.t, f.fl.lo.oa.
1160: 61 74 08 74 2c 20 64 65 70 65 6e 64 69 6e 67 20 at.t, depending
1170: 6f 6e 20 74 68 65 20 63 6c 61 73 73 20 6f 66 20 on the class of
1180: 5f 08 61 5f 08 72 5f 08 67 5f 08 5f 5f 08 74 5f _.a_.r_.g_.__.t_
1190: 08 79 5f 08 70 5f 08 65 2e 0a 0a 20 20 20 20 20 .y_.p_.e...
11a0: 20 20 49 6e 20 76 08 76 61 08 61 5f 08 5f 73 08 In v.va.a_._s.
11b0: 73 74 08 74 61 08 61 72 08 72 74 08 74 5f 08 5f st.ta.ar.rt.t_._
11c0: 73 08 73 74 08 74 72 08 72 75 08 75 63 08 63 74 s.st.tr.ru.uc.ct
11d0: 08 74 28 08 28 5f 08 61 5f 08 6c 5f 08 69 5f 08 .t(.(_.a_.l_.i_.
11e0: 73 5f 08 74 2c 08 2c 20 20 5f 08 72 5f 08 65 5f s_.t,., _.r_.e_
11f0: 08 74 5f 08 75 5f 08 72 5f 08 6e 5f 08 5f 5f 08 .t_.u_.r_.n_.__.
1200: 74 5f 08 79 5f 08 70 5f 08 65 2c 08 2c 20 20 5f t_.y_.p_.e,., _
1210: 08 73 5f 08 70 5f 08 6c 5f 08 69 5f 08 74 5f 08 .s_.p_.l_.i_.t_.
1220: 74 5f 08 61 5f 08 62 5f 08 6c 5f 08 65 29 08 29 t_.a_.b_.l_.e).)
1230: 3b 08 3b 20 20 74 68 65 0a 20 20 20 20 20 20 20 ;.; the.
1240: 5f 08 73 5f 08 70 5f 08 6c 5f 08 69 5f 08 74 5f _.s_.p_.l_.i_.t_
1250: 08 74 5f 08 61 5f 08 62 5f 08 6c 5f 08 65 20 20 .t_.a_.b_.l_.e
1260: 66 6c 61 67 20 20 73 70 65 63 69 66 69 65 73 20 flag specifies
1270: 77 68 65 74 68 65 72 20 74 68 65 20 73 74 72 75 whether the stru
1280: 63 74 20 5f 08 72 5f 08 65 5f 08 74 5f 08 75 5f ct _.r_.e_.t_.u_
1290: 08 72 5f 08 6e 5f 08 5f 5f 08 74 5f 08 79 5f 08 .r_.n_.__.t_.y_.
12a0: 70 5f 08 65 0a 20 20 20 20 20 20 20 63 61 6e 20 p_.e. can
12b0: 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 72 be returned in r
12c0: 65 67 69 73 74 65 72 73 20 73 75 63 68 20 74 68 egisters such th
12d0: 61 74 20 65 76 65 72 79 20 73 74 72 75 63 74 20 at every struct
12e0: 20 66 69 65 6c 64 0a 20 20 20 20 20 20 20 66 69 field. fi
12f0: 74 73 20 65 6e 74 69 72 65 6c 79 20 69 6e 20 61 ts entirely in a
1300: 20 73 69 6e 67 6c 65 20 72 65 67 69 73 74 65 72 single register
1310: 2e 20 54 68 69 73 20 6e 65 65 64 73 20 74 6f 20 . This needs to
1320: 62 65 20 73 70 65 63 2d 0a 20 20 20 20 20 20 20 be spec-.
1330: 69 66 69 65 64 20 66 6f 72 20 73 74 72 75 63 74 ified for struct
1340: 73 20 6f 66 20 73 69 7a 65 20 32 2a 73 69 7a 65 s of size 2*size
1350: 6f 66 28 6c 6f 6e 67 29 2e 20 46 6f 72 20 20 73 of(long). For s
1360: 74 72 75 63 74 73 20 20 6f 66 0a 20 20 20 20 20 tructs of.
1370: 20 20 73 69 7a 65 20 3c 3d 20 73 69 7a 65 6f 66 size <= sizeof
1380: 28 6c 6f 6e 67 29 2c 20 5f 08 73 5f 08 70 5f 08 (long), _.s_.p_.
1390: 6c 5f 08 69 5f 08 74 5f 08 74 5f 08 61 5f 08 62 l_.i_.t_.t_.a_.b
13a0: 5f 08 6c 5f 08 65 20 69 73 20 69 67 6e 6f 72 65 _.l_.e is ignore
13b0: 64 20 61 6e 64 20 61 73 73 75 6d 65 64 20 74 6f d and assumed to
13c0: 0a 20 20 20 20 20 20 20 62 65 20 31 2e 20 46 6f . be 1. Fo
13d0: 72 20 73 74 72 75 63 74 73 20 6f 66 20 73 69 7a r structs of siz
13e0: 65 20 3e 20 32 2a 73 69 7a 65 6f 66 28 6c 6f 6e e > 2*sizeof(lon
13f0: 67 29 2c 20 5f 08 73 5f 08 70 5f 08 6c 5f 08 69 g), _.s_.p_.l_.i
1400: 5f 08 74 5f 08 74 5f 08 61 5f 08 62 5f 08 6c 5f _.t_.t_.a_.b_.l_
1410: 08 65 20 20 69 73 0a 20 20 20 20 20 20 20 69 67 .e is. ig
1420: 6e 6f 72 65 64 20 20 61 6e 64 20 20 61 73 73 75 nored and assu
1430: 6d 65 64 20 74 6f 20 62 65 20 30 2e 20 54 68 65 med to be 0. The
1440: 72 65 20 61 72 65 20 73 6f 6d 65 20 68 61 6e 64 re are some hand
1450: 79 20 6d 61 63 72 6f 73 0a 20 20 20 20 20 20 20 y macros.
1460: 66 6f 72 20 74 68 69 73 3a 0a 20 20 20 20 20 20 for this:.
1470: 20 76 08 76 61 08 61 5f 08 5f 77 08 77 6f 08 6f v.va.a_._w.wo.o
1480: 72 08 72 64 08 64 5f 08 5f 73 08 73 70 08 70 6c r.rd.d_._s.sp.pl
1490: 08 6c 69 08 69 74 08 74 74 08 74 61 08 61 62 08 .li.it.tt.ta.ab.
14a0: 62 6c 08 6c 65 08 65 5f 08 5f 31 08 31 20 28 08 bl.le.e_._1.1 (.
14b0: 28 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5f 08 31 (_.t_.y_.p_.e_.1
14c0: 29 08 29 0a 20 20 20 20 20 20 20 76 08 76 61 08 ).). v.va.
14d0: 61 5f 08 5f 77 08 77 6f 08 6f 72 08 72 64 08 64 a_._w.wo.or.rd.d
14e0: 5f 08 5f 73 08 73 70 08 70 6c 08 6c 69 08 69 74 _._s.sp.pl.li.it
14f0: 08 74 74 08 74 61 08 61 62 08 62 6c 08 6c 65 08 .tt.ta.ab.bl.le.
1500: 65 5f 08 5f 32 08 32 20 28 08 28 5f 08 74 5f 08 e_._2.2 (.(_.t_.
1510: 79 5f 08 70 5f 08 65 5f 08 31 2c 08 2c 20 5f 08 y_.p_.e_.1,., _.
1520: 74 5f 08 79 5f 08 70 5f 08 65 5f 08 32 29 08 29 t_.y_.p_.e_.2).)
1530: 0a 20 20 20 20 20 20 20 76 08 76 61 08 61 5f 08 . v.va.a_.
1540: 5f 77 08 77 6f 08 6f 72 08 72 64 08 64 5f 08 5f _w.wo.or.rd.d_._
1550: 73 08 73 70 08 70 6c 08 6c 69 08 69 74 08 74 74 s.sp.pl.li.it.tt
1560: 08 74 61 08 61 62 08 62 6c 08 6c 65 08 65 5f 08 .ta.ab.bl.le.e_.
1570: 5f 33 08 33 20 28 08 28 5f 08 74 5f 08 79 5f 08 _3.3 (.(_.t_.y_.
1580: 70 5f 08 65 5f 08 31 2c 08 2c 20 5f 08 74 5f 08 p_.e_.1,., _.t_.
1590: 79 5f 08 70 5f 08 65 5f 08 32 2c 08 2c 20 5f 08 y_.p_.e_.2,., _.
15a0: 74 5f 08 79 5f 08 70 5f 08 65 5f 08 33 29 08 29 t_.y_.p_.e_.3).)
15b0: 0a 20 20 20 20 20 20 20 76 08 76 61 08 61 5f 08 . v.va.a_.
15c0: 5f 77 08 77 6f 08 6f 72 08 72 64 08 64 5f 08 5f _w.wo.or.rd.d_._
15d0: 73 08 73 70 08 70 6c 08 6c 69 08 69 74 08 74 74 s.sp.pl.li.it.tt
15e0: 08 74 61 08 61 62 08 62 6c 08 6c 65 08 65 5f 08 .ta.ab.bl.le.e_.
15f0: 5f 34 08 34 20 28 08 28 5f 08 74 5f 08 79 5f 08 _4.4 (.(_.t_.y_.
1600: 70 5f 08 65 5f 08 31 2c 08 2c 20 5f 08 74 5f 08 p_.e_.1,., _.t_.
1610: 79 5f 08 70 5f 08 65 5f 08 32 2c 08 2c 20 5f 08 y_.p_.e_.2,., _.
1620: 74 5f 08 79 5f 08 70 5f 08 65 5f 08 33 2c 08 2c t_.y_.p_.e_.3,.,
1630: 20 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5f 08 34 _.t_.y_.p_.e_.4
1640: 29 08 29 0a 20 20 20 20 20 20 20 46 6f 72 20 61 ).). For a
1650: 20 73 74 72 75 63 74 20 77 69 74 68 20 74 68 72 struct with thr
1660: 65 65 20 73 6c 6f 74 73 0a 20 20 20 20 20 20 20 ee slots.
1670: 73 08 73 74 08 74 72 08 72 75 08 75 63 08 63 74 s.st.tr.ru.uc.ct
1680: 08 74 20 7b 08 7b 20 5f 08 74 5f 08 79 5f 08 70 .t {.{ _.t_.y_.p
1690: 5f 08 65 5f 08 31 20 5f 08 69 5f 08 64 5f 08 31 _.e_.1 _.i_.d_.1
16a0: 3b 08 3b 20 5f 08 74 5f 08 79 5f 08 70 5f 08 65 ;.; _.t_.y_.p_.e
16b0: 5f 08 32 20 5f 08 69 5f 08 64 5f 08 32 3b 08 3b _.2 _.i_.d_.2;.;
16c0: 20 5f 08 74 5f 08 79 5f 08 70 5f 08 65 5f 08 33 _.t_.y_.p_.e_.3
16d0: 20 5f 08 69 5f 08 64 5f 08 33 3b 08 3b 20 7d 08 _.i_.d_.3;.; }.
16e0: 7d 0a 20 20 20 20 20 20 20 79 6f 75 20 63 61 6e }. you can
16f0: 20 73 70 65 63 69 66 79 20 5f 08 73 5f 08 70 5f specify _.s_.p_
1700: 08 6c 5f 08 69 5f 08 74 5f 08 74 5f 08 61 5f 08 .l_.i_.t_.t_.a_.
1710: 62 5f 08 6c 5f 08 65 20 61 73 20 76 08 76 61 08 b_.l_.e as v.va.
1720: 61 5f 08 5f 77 08 77 6f 08 6f 72 08 72 64 08 64 a_._w.wo.or.rd.d
1730: 5f 08 5f 73 08 73 70 08 70 6c 08 6c 69 08 69 74 _._s.sp.pl.li.it
1740: 08 74 74 08 74 61 08 61 62 08 62 6c 08 6c 65 08 .tt.ta.ab.bl.le.
1750: 65 5f 08 5f 33 08 33 20 28 08 28 5f 08 74 5f 08 e_._3.3 (.(_.t_.
1760: 79 5f 08 70 5f 08 65 5f 08 31 2c 08 2c 0a 20 20 y_.p_.e_.1,.,.
1770: 20 20 20 20 20 5f 08 74 5f 08 79 5f 08 70 5f 08 _.t_.y_.p_.
1780: 65 5f 08 32 2c 08 2c 20 5f 08 74 5f 08 79 5f 08 e_.2,., _.t_.y_.
1790: 70 5f 08 65 5f 08 33 29 08 29 20 2e 0a 0a 0a 4e p_.e_.3).) ....N
17a0: 08 4e 4f 08 4f 54 08 54 45 08 45 53 08 53 0a 20 .NO.OT.TE.ES.S.
17b0: 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e 73 20 Functions
17c0: 20 77 68 69 63 68 20 77 61 6e 74 20 74 6f 20 65 which want to e
17d0: 6d 75 6c 61 74 65 20 4b 65 72 6e 69 67 68 61 6e mulate Kernighan
17e0: 20 26 20 52 69 74 63 68 69 65 20 73 74 79 6c 65 & Ritchie style
17f0: 0a 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e . function
1800: 73 20 28 69 2e 65 2e 2c 20 69 6e 20 41 4e 53 49 s (i.e., in ANSI
1810: 20 20 43 2c 20 20 66 75 6e 63 74 69 6f 6e 73 20 C, functions
1820: 20 77 69 74 68 6f 75 74 20 20 61 20 20 74 79 70 without a typ
1830: 65 64 0a 20 20 20 20 20 20 20 61 72 67 75 6d 65 ed. argume
1840: 6e 74 20 20 6c 69 73 74 29 20 20 63 61 6e 6e 6f nt list) canno
1850: 74 20 20 75 73 65 20 20 74 68 65 20 5f 08 74 5f t use the _.t_
1860: 08 79 5f 08 70 5f 08 65 20 76 61 6c 75 65 73 20 .y_.p_.e values
1870: 63 08 63 68 08 68 61 08 61 72 08 72 2c 20 73 08 c.ch.ha.ar.r, s.
1880: 73 63 08 63 68 08 68 61 08 61 72 08 72 2c 0a 20 sc.ch.ha.ar.r,.
1890: 20 20 20 20 20 20 75 08 75 63 08 63 68 08 68 61 u.uc.ch.ha
18a0: 08 61 72 08 72 2c 20 73 08 73 68 08 68 6f 08 6f .ar.r, s.sh.ho.o
18b0: 72 08 72 74 08 74 2c 20 75 08 75 73 08 73 68 08 r.rt.t, u.us.sh.
18c0: 68 6f 08 6f 72 08 72 74 08 74 2c 20 66 08 66 6c ho.or.rt.t, f.fl
18d0: 08 6c 6f 08 6f 61 08 61 74 08 74 2e 20 20 41 73 .lo.oa.at.t. As
18e0: 20 70 72 65 73 63 72 69 62 65 64 20 62 79 20 74 prescribed by t
18f0: 68 65 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 he default.
1900: 20 20 4b 26 52 20 20 43 20 65 78 70 72 65 73 73 K&R C express
1910: 69 6f 6e 20 70 72 6f 6d 6f 74 69 6f 6e 73 2c 20 ion promotions,
1920: 74 68 65 79 20 68 61 76 65 20 74 6f 20 75 73 65 they have to use
1930: 20 69 08 69 6e 08 6e 74 08 74 20 69 6e 73 74 65 i.in.nt.t inste
1940: 61 64 0a 20 20 20 20 20 20 20 6f 66 20 63 08 63 ad. of c.c
1950: 68 08 68 61 08 61 72 08 72 2c 20 73 08 73 63 08 h.ha.ar.r, s.sc.
1960: 63 68 08 68 61 08 61 72 08 72 2c 20 75 08 75 63 ch.ha.ar.r, u.uc
1970: 08 63 68 08 68 61 08 61 72 08 72 2c 20 73 08 73 .ch.ha.ar.r, s.s
1980: 68 08 68 6f 08 6f 72 08 72 74 08 74 2c 20 75 08 h.ho.or.rt.t, u.
1990: 75 73 08 73 68 08 68 6f 08 6f 72 08 72 74 08 74 us.sh.ho.or.rt.t
19a0: 20 61 6e 64 20 64 08 64 6f 08 6f 75 08 75 62 08 and d.do.ou.ub.
19b0: 62 6c 08 6c 65 08 65 20 69 6e 73 74 65 61 64 20 bl.le.e instead
19c0: 6f 66 0a 20 20 20 20 20 20 20 66 08 66 6c 08 6c of. f.fl.l
19d0: 6f 08 6f 61 08 61 74 08 74 2e 0a 0a 20 20 20 20 o.oa.at.t...
19e0: 20 20 20 54 68 65 20 20 20 6d 61 63 72 6f 73 20 The macros
19f0: 20 20 76 08 76 61 08 61 5f 08 5f 73 08 73 74 08 v.va.a_._s.st.
1a00: 74 61 08 61 72 08 72 74 08 74 5f 08 5f 6c 08 6c ta.ar.rt.t_._l.l
1a10: 6f 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f 08 6f 6e o.on.ng.gl.lo.on
1a20: 08 6e 67 08 67 28 08 28 29 08 29 2c 20 20 76 08 .ng.g(.().), v.
1a30: 76 61 08 61 5f 08 5f 73 08 73 74 08 74 61 08 61 va.a_._s.st.ta.a
1a40: 72 08 72 74 08 74 5f 08 5f 75 08 75 6c 08 6c 6f r.rt.t_._u.ul.lo
1a50: 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f 08 6f 6e 08 .on.ng.gl.lo.on.
1a60: 6e 67 08 67 28 08 28 29 08 29 2c 0a 20 20 20 20 ng.g(.().),.
1a70: 20 20 20 76 08 76 61 08 61 5f 08 5f 72 08 72 65 v.va.a_._r.re
1a80: 08 65 74 08 74 75 08 75 72 08 72 6e 08 6e 5f 08 .et.tu.ur.rn.n_.
1a90: 5f 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 6c 08 6c _l.lo.on.ng.gl.l
1aa0: 6f 08 6f 6e 08 6e 67 08 67 28 08 28 29 08 29 2c o.on.ng.g(.().),
1ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v
1ac0: 08 76 61 08 61 5f 08 5f 72 08 72 65 08 65 74 08 .va.a_._r.re.et.
1ad0: 74 75 08 75 72 08 72 6e 08 6e 5f 08 5f 75 08 75 tu.ur.rn.n_._u.u
1ae0: 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f l.lo.on.ng.gl.lo
1af0: 08 6f 6e 08 6e 67 08 67 28 08 28 29 08 29 2c 0a .on.ng.g(.().),.
1b00: 20 20 20 20 20 20 20 76 08 76 61 08 61 5f 08 5f v.va.a_._
1b10: 61 08 61 72 08 72 67 08 67 5f 08 5f 6c 08 6c 6f a.ar.rg.g_._l.lo
1b20: 08 6f 6e 08 6e 67 08 67 6c 08 6c 6f 08 6f 6e 08 .on.ng.gl.lo.on.
1b30: 6e 67 08 67 28 08 28 29 08 29 20 20 61 6e 64 20 ng.g(.().) and
1b40: 76 08 76 61 08 61 5f 08 5f 61 08 61 72 08 72 67 v.va.a_._a.ar.rg
1b50: 08 67 5f 08 5f 75 08 75 6c 08 6c 6f 08 6f 6e 08 .g_._u.ul.lo.on.
1b60: 6e 67 08 67 6c 08 6c 6f 08 6f 6e 08 6e 67 08 67 ng.gl.lo.on.ng.g
1b70: 28 08 28 29 08 29 20 77 6f 72 6b 20 6f 6e 6c 79 (.().) work only
1b80: 20 69 66 20 74 68 65 0a 20 20 20 20 20 20 20 43 if the. C
1b90: 20 63 6f 6d 70 69 6c 65 72 20 68 61 73 20 61 20 compiler has a
1ba0: 77 6f 72 6b 69 6e 67 20 6c 08 6c 6f 08 6f 6e 08 working l.lo.on.
1bb0: 6e 67 08 67 20 6c 08 6c 6f 08 6f 6e 08 6e 67 08 ng.g l.lo.on.ng.
1bc0: 67 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72 g 64-bit integer
1bd0: 20 74 79 70 65 2e 0a 0a 20 20 20 20 20 20 20 54 type... T
1be0: 68 65 20 73 74 72 75 63 74 20 74 79 70 65 73 20 he struct types
1bf0: 75 73 65 64 20 69 6e 20 76 08 76 61 08 61 5f 08 used in v.va.a_.
1c00: 5f 73 08 73 74 08 74 61 08 61 72 08 72 74 08 74 _s.st.ta.ar.rt.t
1c10: 5f 08 5f 73 08 73 74 08 74 72 08 72 75 08 75 63 _._s.st.tr.ru.uc
1c20: 08 63 74 08 74 28 08 28 29 08 29 20 61 6e 64 20 .ct.t(.().) and
1c30: 76 08 76 61 08 61 5f 08 5f 73 08 73 74 08 74 72 v.va.a_._s.st.tr
1c40: 08 72 75 08 75 63 08 63 74 08 74 28 08 28 29 08 .ru.uc.ct.t(.().
1c50: 29 0a 20 20 20 20 20 20 20 6d 75 73 74 20 20 6f ). must o
1c60: 6e 6c 79 20 20 63 6f 6e 74 61 69 6e 20 20 28 73 nly contain (s
1c70: 69 67 6e 65 64 20 20 6f 72 20 75 6e 73 69 67 6e igned or unsign
1c80: 65 64 29 20 69 6e 74 2c 20 6c 6f 6e 67 2c 20 6c ed) int, long, l
1c90: 6f 6e 67 0a 20 20 20 20 20 20 20 6c 6f 6e 67 20 ong. long
1ca0: 6f 72 20 70 6f 69 6e 74 65 72 20 66 69 65 6c 64 or pointer field
1cb0: 73 2e 20 20 53 74 72 75 63 74 20 74 79 70 65 73 s. Struct types
1cc0: 20 20 63 6f 6e 74 61 69 6e 69 6e 67 20 20 28 73 containing (s
1cd0: 69 67 6e 65 64 0a 20 20 20 20 20 20 20 6f 72 20 igned. or
1ce0: 20 75 6e 73 69 67 6e 65 64 29 20 20 63 68 61 72 unsigned) char
1cf0: 2c 20 73 68 6f 72 74 2c 20 66 6c 6f 61 74 2c 20 , short, float,
1d00: 64 6f 75 62 6c 65 20 6f 72 20 6f 74 68 65 72 20 double or other
1d10: 73 74 72 75 63 74 73 0a 20 20 20 20 20 20 20 61 structs. a
1d20: 72 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 re not supported
1d30: 2e 0a 0a 0a 0a 0a 0a 20 20 20 20 20 20 20 20 20 .......
1d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1d50: 31 34 20 4a 61 6e 75 61 72 79 20 32 30 30 31 20 14 January 2001
1d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1d70: 20 20 20 20 20 20 20 32 0a 0a 0a 0a 0a 0a 56 41 2......VA
1d80: 43 41 4c 4c 28 33 29 20 20 20 20 20 20 20 20 20 CALL(3)
1d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1db0: 20 20 20 20 20 20 56 41 43 41 4c 4c 28 33 29 0a VACALL(3).
1dc0: 0a 0a 45 08 45 58 08 58 41 08 41 4d 08 4d 50 08 ..E.EX.XA.AM.MP.
1dd0: 50 4c 08 4c 45 08 45 0a 20 20 20 20 20 20 20 54 PL.LE.E. T
1de0: 68 69 73 20 65 78 61 6d 70 6c 65 2c 20 61 20 70 his example, a p
1df0: 6f 73 73 69 62 6c 65 20 69 6d 70 6c 65 6d 65 6e ossible implemen
1e00: 74 61 74 69 6f 6e 20 6f 66 20 65 08 65 78 08 78 tation of e.ex.x
1e10: 65 08 65 63 08 63 6c 08 6c 28 33 29 20 6f 6e 20 e.ec.cl.l(3) on
1e20: 74 6f 70 0a 20 20 20 20 20 20 20 6f 66 20 65 08 top. of e.
1e30: 65 78 08 78 65 08 65 63 08 63 76 08 76 28 32 29 ex.xe.ec.cv.v(2)
1e40: 20 75 73 69 6e 67 20 76 08 76 61 08 61 72 08 72 using v.va.ar.r
1e50: 61 08 61 72 08 72 67 08 67 73 08 73 28 33 29 2c a.ar.rg.gs.s(3),
1e60: 0a 0a 20 20 20 20 20 20 20 23 08 23 69 08 69 6e .. #.#i.in
1e70: 08 6e 63 08 63 6c 08 6c 75 08 75 64 08 64 65 08 .nc.cl.lu.ud.de.
1e80: 65 20 3c 08 3c 76 08 76 61 08 61 72 08 72 61 08 e <.<v.va.ar.ra.
1e90: 61 72 08 72 67 08 67 73 08 73 2e 08 2e 68 08 68 ar.rg.gs.s...h.h
1ea0: 3e 08 3e 0a 20 20 20 20 20 20 20 23 08 23 64 08 >.>. #.#d.
1eb0: 64 65 08 65 66 08 66 69 08 69 6e 08 6e 65 08 65 de.ef.fi.in.ne.e
1ec0: 20 4d 08 4d 41 08 41 58 08 58 41 08 41 52 08 52 M.MA.AX.XA.AR.R
1ed0: 47 08 47 53 08 53 20 31 08 31 30 08 30 30 08 30 G.GS.S 1.10.00.0
1ee0: 0a 20 20 20 20 20 20 20 2f 08 2f 2a 08 2a 20 65 . /./*.* e
1ef0: 08 65 78 08 78 65 08 65 63 08 63 6c 08 6c 20 69 .ex.xe.ec.cl.l i
1f00: 08 69 73 08 73 20 63 08 63 61 08 61 6c 08 6c 6c .is.s c.ca.al.ll
1f10: 08 6c 65 08 65 64 08 64 20 62 08 62 79 08 79 20 .le.ed.d b.by.y
1f20: 65 08 65 78 08 78 65 08 65 63 08 63 6c 08 6c 28 e.ex.xe.ec.cl.l(
1f30: 08 28 66 08 66 69 08 69 6c 08 6c 65 08 65 2c 08 .(f.fi.il.le.e,.
1f40: 2c 20 61 08 61 72 08 72 67 08 67 31 08 31 2c 08 , a.ar.rg.g1.1,.
1f50: 2c 20 61 08 61 72 08 72 67 08 67 32 08 32 2c 08 , a.ar.rg.g2.2,.
1f60: 2c 20 2e 08 2e 2e 08 2e 2e 08 2e 2c 08 2c 20 28 , .........,., (
1f70: 08 28 63 08 63 68 08 68 61 08 61 72 08 72 20 2a .(c.ch.ha.ar.r *
1f80: 08 2a 29 08 29 30 08 30 29 08 29 3b 08 3b 20 2a .*).)0.0).);.; *
1f90: 08 2a 2f 08 2f 0a 20 20 20 20 20 20 20 69 08 69 .*/./. i.i
1fa0: 6e 08 6e 74 08 74 20 65 08 65 78 08 78 65 08 65 n.nt.t e.ex.xe.e
1fb0: 63 08 63 6c 08 6c 20 28 08 28 76 08 76 61 08 61 c.cl.l (.(v.va.a
1fc0: 5f 08 5f 61 08 61 6c 08 6c 69 08 69 73 08 73 74 _._a.al.li.is.st
1fd0: 08 74 29 08 29 0a 20 20 20 20 20 20 20 20 20 76 .t).). v
1fe0: 08 76 61 08 61 5f 08 5f 64 08 64 63 08 63 6c 08 .va.a_._d.dc.cl.
1ff0: 6c 0a 20 20 20 20 20 20 20 7b 08 7b 0a 20 20 20 l. {.{.
2000: 20 20 20 20 20 20 76 08 76 61 08 61 5f 08 5f 6c v.va.a_._l
2010: 08 6c 69 08 69 73 08 73 74 08 74 20 61 08 61 70 .li.is.st.t a.ap
2020: 08 70 3b 08 3b 0a 20 20 20 20 20 20 20 20 20 63 .p;.;. c
2030: 08 63 68 08 68 61 08 61 72 08 72 2a 08 2a 20 66 .ch.ha.ar.r*.* f
2040: 08 66 69 08 69 6c 08 6c 65 08 65 3b 08 3b 0a 20 .fi.il.le.e;.;.
2050: 20 20 20 20 20 20 20 20 63 08 63 68 08 68 61 08 c.ch.ha.
2060: 61 72 08 72 2a 08 2a 20 61 08 61 72 08 72 67 08 ar.r*.* a.ar.rg.
2070: 67 73 08 73 5b 08 5b 4d 08 4d 41 08 41 58 08 58 gs.s[.[M.MA.AX.X
2080: 41 08 41 52 08 52 47 08 47 53 08 53 5d 08 5d 3b A.AR.RG.GS.S].];
2090: 08 3b 0a 20 20 20 20 20 20 20 20 20 69 08 69 6e .;. i.in
20a0: 08 6e 74 08 74 20 61 08 61 72 08 72 67 08 67 6e .nt.t a.ar.rg.gn
20b0: 08 6e 6f 08 6f 20 3d 08 3d 20 30 08 30 3b 08 3b .no.o =.= 0.0;.;
20c0: 0a 20 20 20 20 20 20 20 20 20 76 08 76 61 08 61 . v.va.a
20d0: 5f 08 5f 73 08 73 74 08 74 61 08 61 72 08 72 74 _._s.st.ta.ar.rt
20e0: 08 74 20 28 08 28 61 08 61 70 08 70 29 08 29 3b .t (.(a.ap.p).);
20f0: 08 3b 0a 20 20 20 20 20 20 20 20 20 66 08 66 69 .;. f.fi
2100: 08 69 6c 08 6c 65 08 65 20 3d 08 3d 20 76 08 76 .il.le.e =.= v.v
2110: 61 08 61 5f 08 5f 61 08 61 72 08 72 67 08 67 28 a.a_._a.ar.rg.g(
2120: 08 28 61 08 61 70 08 70 2c 08 2c 20 63 08 63 68 .(a.ap.p,., c.ch
2130: 08 68 61 08 61 72 08 72 2a 08 2a 29 08 29 3b 08 .ha.ar.r*.*).);.
2140: 3b 0a 20 20 20 20 20 20 20 20 20 77 08 77 68 08 ;. w.wh.
2150: 68 69 08 69 6c 08 6c 65 08 65 20 28 08 28 28 08 hi.il.le.e (.((.
2160: 28 61 08 61 72 08 72 67 08 67 73 08 73 5b 08 5b (a.ar.rg.gs.s[.[
2170: 61 08 61 72 08 72 67 08 67 6e 08 6e 6f 08 6f 5d a.ar.rg.gn.no.o]
2180: 08 5d 20 3d 08 3d 20 76 08 76 61 08 61 5f 08 5f .] =.= v.va.a_._
2190: 61 08 61 72 08 72 67 08 67 28 08 28 61 08 61 70 a.ar.rg.g(.(a.ap
21a0: 08 70 2c 08 2c 20 63 08 63 68 08 68 61 08 61 72 .p,., c.ch.ha.ar
21b0: 08 72 2a 08 2a 29 08 29 29 08 29 20 21 08 21 3d .r*.*).)).) !.!=
21c0: 08 3d 20 28 08 28 63 08 63 68 08 68 61 08 61 72 .= (.(c.ch.ha.ar
21d0: 08 72 20 2a 08 2a 29 08 29 30 08 30 29 08 29 0a .r *.*).)0.0).).
21e0: 20 20 20 20 20 20 20 20 20 20 20 61 08 61 72 08 a.ar.
21f0: 72 67 08 67 6e 08 6e 6f 08 6f 2b 08 2b 2b 08 2b rg.gn.no.o+.++.+
2200: 3b 08 3b 0a 20 20 20 20 20 20 20 20 20 76 08 76 ;.;. v.v
2210: 61 08 61 5f 08 5f 65 08 65 6e 08 6e 64 08 64 20 a.a_._e.en.nd.d
2220: 28 08 28 61 08 61 70 08 70 29 08 29 3b 08 3b 0a (.(a.ap.p).);.;.
2230: 20 20 20 20 20 20 20 20 20 72 08 72 65 08 65 74 r.re.et
2240: 08 74 75 08 75 72 08 72 6e 08 6e 20 65 08 65 78 .tu.ur.rn.n e.ex
2250: 08 78 65 08 65 63 08 63 76 08 76 28 08 28 66 08 .xe.ec.cv.v(.(f.
2260: 66 69 08 69 6c 08 6c 65 08 65 2c 08 2c 20 61 08 fi.il.le.e,., a.
2270: 61 72 08 72 67 08 67 73 08 73 29 08 29 3b 08 3b ar.rg.gs.s).);.;
2280: 0a 20 20 20 20 20 20 20 7d 08 7d 0a 0a 20 20 20 . }.}..
2290: 20 20 20 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74 looks like t
22a0: 68 69 73 20 75 73 69 6e 67 20 76 08 76 61 08 61 his using v.va.a
22b0: 63 08 63 61 08 61 6c 08 6c 6c 08 6c 28 33 29 3a c.ca.al.ll.l(3):
22c0: 0a 0a 20 20 20 20 20 20 20 23 08 23 69 08 69 6e .. #.#i.in
22d0: 08 6e 63 08 63 6c 08 6c 75 08 75 64 08 64 65 08 .nc.cl.lu.ud.de.
22e0: 65 20 3c 08 3c 76 08 76 61 08 61 63 08 63 61 08 e <.<v.va.ac.ca.
22f0: 61 6c 08 6c 6c 08 6c 2e 08 2e 68 08 68 3e 08 3e al.ll.l...h.h>.>
2300: 0a 20 20 20 20 20 20 20 23 08 23 64 08 64 65 08 . #.#d.de.
2310: 65 66 08 66 69 08 69 6e 08 6e 65 08 65 20 4d 08 ef.fi.in.ne.e M.
2320: 4d 41 08 41 58 08 58 41 08 41 52 08 52 47 08 47 MA.AX.XA.AR.RG.G
2330: 53 08 53 20 31 08 31 30 08 30 30 08 30 0a 20 20 S.S 1.10.00.0.
2340: 20 20 20 20 20 2f 08 2f 2a 08 2a 20 65 08 65 78 /./*.* e.ex
2350: 08 78 65 08 65 63 08 63 6c 08 6c 20 69 08 69 73 .xe.ec.cl.l i.is
2360: 08 73 20 63 08 63 61 08 61 6c 08 6c 6c 08 6c 65 .s c.ca.al.ll.le
2370: 08 65 64 08 64 20 62 08 62 79 08 79 20 76 08 76 .ed.d b.by.y v.v
2380: 61 08 61 63 08 63 61 08 61 6c 08 6c 6c 08 6c 28 a.ac.ca.al.ll.l(
2390: 08 28 66 08 66 69 08 69 6c 08 6c 65 08 65 2c 08 .(f.fi.il.le.e,.
23a0: 2c 20 61 08 61 72 08 72 67 08 67 31 08 31 2c 08 , a.ar.rg.g1.1,.
23b0: 2c 20 61 08 61 72 08 72 67 08 67 32 08 32 2c 08 , a.ar.rg.g2.2,.
23c0: 2c 20 2e 08 2e 2e 08 2e 2e 08 2e 2c 08 2c 20 28 , .........,., (
23d0: 08 28 63 08 63 68 08 68 61 08 61 72 08 72 20 2a .(c.ch.ha.ar.r *
23e0: 08 2a 29 08 29 30 08 30 29 08 29 3b 08 3b 20 2a .*).)0.0).);.; *
23f0: 08 2a 2f 08 2f 0a 20 20 20 20 20 20 20 76 08 76 .*/./. v.v
2400: 6f 08 6f 69 08 69 64 08 64 20 65 08 65 78 08 78 o.oi.id.d e.ex.x
2410: 65 08 65 63 08 63 6c 08 6c 20 28 08 28 61 08 61 e.ec.cl.l (.(a.a
2420: 70 08 70 29 08 29 0a 20 20 20 20 20 20 20 20 20 p.p).).
2430: 76 08 76 61 08 61 5f 08 5f 61 08 61 6c 08 6c 69 v.va.a_._a.al.li
2440: 08 69 73 08 73 74 08 74 20 61 08 61 70 08 70 3b .is.st.t a.ap.p;
2450: 08 3b 0a 20 20 20 20 20 20 20 7b 08 7b 0a 20 20 .;. {.{.
2460: 20 20 20 20 20 20 20 63 08 63 68 08 68 61 08 61 c.ch.ha.a
2470: 72 08 72 2a 08 2a 20 66 08 66 69 08 69 6c 08 6c r.r*.* f.fi.il.l
2480: 65 08 65 3b 08 3b 0a 20 20 20 20 20 20 20 20 20 e.e;.;.
2490: 63 08 63 68 08 68 61 08 61 72 08 72 2a 08 2a 20 c.ch.ha.ar.r*.*
24a0: 61 08 61 72 08 72 67 08 67 73 08 73 5b 08 5b 4d a.ar.rg.gs.s[.[M
24b0: 08 4d 41 08 41 58 08 58 41 08 41 52 08 52 47 08 .MA.AX.XA.AR.RG.
24c0: 47 53 08 53 5d 08 5d 3b 08 3b 0a 20 20 20 20 20 GS.S].];.;.
24d0: 20 20 20 20 69 08 69 6e 08 6e 74 08 74 20 61 08 i.in.nt.t a.
24e0: 61 72 08 72 67 08 67 6e 08 6e 6f 08 6f 20 3d 08 ar.rg.gn.no.o =.
24f0: 3d 20 30 08 30 3b 08 3b 0a 20 20 20 20 20 20 20 = 0.0;.;.
2500: 20 20 69 08 69 6e 08 6e 74 08 74 20 72 08 72 65 i.in.nt.t r.re
2510: 08 65 74 08 74 76 08 76 61 08 61 6c 08 6c 3b 08 .et.tv.va.al.l;.
2520: 3b 0a 20 20 20 20 20 20 20 20 20 76 08 76 61 08 ;. v.va.
2530: 61 5f 08 5f 73 08 73 74 08 74 61 08 61 72 08 72 a_._s.st.ta.ar.r
2540: 74 08 74 5f 08 5f 69 08 69 6e 08 6e 74 08 74 20 t.t_._i.in.nt.t
2550: 28 08 28 61 08 61 70 08 70 29 08 29 3b 08 3b 0a (.(a.ap.p).);.;.
2560: 20 20 20 20 20 20 20 20 20 66 08 66 69 08 69 6c f.fi.il
2570: 08 6c 65 08 65 20 3d 08 3d 20 76 08 76 61 08 61 .le.e =.= v.va.a
2580: 5f 08 5f 61 08 61 72 08 72 67 08 67 5f 08 5f 70 _._a.ar.rg.g_._p
2590: 08 70 74 08 74 72 08 72 28 08 28 61 08 61 70 08 .pt.tr.r(.(a.ap.
25a0: 70 2c 08 2c 20 63 08 63 68 08 68 61 08 61 72 08 p,., c.ch.ha.ar.
25b0: 72 2a 08 2a 29 08 29 3b 08 3b 0a 20 20 20 20 20 r*.*).);.;.
25c0: 20 20 20 20 77 08 77 68 08 68 69 08 69 6c 08 6c w.wh.hi.il.l
25d0: 65 08 65 20 28 08 28 28 08 28 61 08 61 72 08 72 e.e (.((.(a.ar.r
25e0: 67 08 67 73 08 73 5b 08 5b 61 08 61 72 08 72 67 g.gs.s[.[a.ar.rg
25f0: 08 67 6e 08 6e 6f 08 6f 5d 08 5d 20 3d 08 3d 20 .gn.no.o].] =.=
2600: 76 08 76 61 08 61 5f 08 5f 61 08 61 72 08 72 67 v.va.a_._a.ar.rg
2610: 08 67 5f 08 5f 70 08 70 74 08 74 72 08 72 28 08 .g_._p.pt.tr.r(.
2620: 28 61 08 61 70 08 70 2c 08 2c 20 63 08 63 68 08 (a.ap.p,., c.ch.
2630: 68 61 08 61 72 08 72 2a 08 2a 29 08 29 29 08 29 ha.ar.r*.*).)).)
2640: 20 21 08 21 3d 08 3d 20 28 08 28 63 08 63 68 08 !.!=.= (.(c.ch.
2650: 68 61 08 61 72 08 72 20 2a 08 2a 29 08 29 30 08 ha.ar.r *.*).)0.
2660: 30 29 08 29 0a 20 20 20 20 20 20 20 20 20 20 20 0).).
2670: 61 08 61 72 08 72 67 08 67 6e 08 6e 6f 08 6f 2b a.ar.rg.gn.no.o+
2680: 08 2b 2b 08 2b 3b 08 3b 0a 20 20 20 20 20 20 20 .++.+;.;.
2690: 20 20 72 08 72 65 08 65 74 08 74 76 08 76 61 08 r.re.et.tv.va.
26a0: 61 6c 08 6c 20 3d 08 3d 20 65 08 65 78 08 78 65 al.l =.= e.ex.xe
26b0: 08 65 63 08 63 76 08 76 28 08 28 66 08 66 69 08 .ec.cv.v(.(f.fi.
26c0: 69 6c 08 6c 65 08 65 2c 08 2c 20 61 08 61 72 08 il.le.e,., a.ar.
26d0: 72 67 08 67 73 08 73 29 08 29 3b 08 3b 0a 20 20 rg.gs.s).);.;.
26e0: 20 20 20 20 20 20 20 76 08 76 61 08 61 5f 08 5f v.va.a_._
26f0: 72 08 72 65 08 65 74 08 74 75 08 75 72 08 72 6e r.re.et.tu.ur.rn
2700: 08 6e 5f 08 5f 69 08 69 6e 08 6e 74 08 74 20 28 .n_._i.in.nt.t (
2710: 08 28 61 08 61 70 08 70 2c 08 2c 20 72 08 72 65 .(a.ap.p,., r.re
2720: 08 65 74 08 74 76 08 76 61 08 61 6c 08 6c 29 08 .et.tv.va.al.l).
2730: 29 3b 08 3b 0a 20 20 20 20 20 20 20 7d 08 7d 0a );.;. }.}.
2740: 20 20 20 20 20 20 20 76 08 76 61 08 61 63 08 63 v.va.ac.c
2750: 61 08 61 6c 08 6c 6c 08 6c 5f 08 5f 66 08 66 75 a.al.ll.l_._f.fu
2760: 08 75 6e 08 6e 63 08 63 74 08 74 69 08 69 6f 08 .un.nc.ct.ti.io.
2770: 6f 6e 08 6e 20 3d 08 3d 20 26 08 26 65 08 65 78 on.n =.= &.&e.ex
2780: 08 78 65 08 65 63 08 63 6c 08 6c 3b 08 3b 0a 0a .xe.ec.cl.l;.;..
2790: 0a 53 08 53 45 08 45 45 08 45 20 41 08 41 4c 08 .S.SE.EE.E A.AL.
27a0: 4c 53 08 53 4f 08 4f 0a 20 20 20 20 20 20 20 76 LS.SO.O. v
27b0: 08 76 61 08 61 72 08 72 61 08 61 72 08 72 67 08 .va.ar.ra.ar.rg.
27c0: 67 73 08 73 28 33 29 2c 20 74 08 74 72 08 72 61 gs.s(3), t.tr.ra
27d0: 08 61 6d 08 6d 70 08 70 6f 08 6f 6c 08 6c 69 08 .am.mp.po.ol.li.
27e0: 69 6e 08 6e 65 08 65 28 33 29 2c 20 63 08 63 61 in.ne.e(3), c.ca
27f0: 08 61 6c 08 6c 6c 08 6c 62 08 62 61 08 61 63 08 .al.ll.lb.ba.ac.
2800: 63 6b 08 6b 28 33 29 2e 0a 0a 0a 42 08 42 55 08 ck.k(3)....B.BU.
2810: 55 47 08 47 53 08 53 0a 20 20 20 20 20 20 20 54 UG.GS.S. T
2820: 68 65 20 20 63 75 72 72 65 6e 74 20 20 69 6d 70 he current imp
2830: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 68 61 76 lementations hav
2840: 65 20 62 65 65 6e 20 74 65 73 74 65 64 20 6f 6e e been tested on
2850: 20 61 20 73 65 6c 65 63 2d 0a 20 20 20 20 20 20 a selec-.
2860: 20 74 69 6f 6e 20 6f 66 20 63 6f 6d 6d 6f 6e 20 tion of common
2870: 63 61 73 65 73 20 62 75 74 20 74 68 65 72 65 20 cases but there
2880: 20 61 72 65 20 20 70 72 6f 62 61 62 6c 79 20 20 are probably
2890: 73 74 69 6c 6c 20 20 6d 61 6e 79 0a 20 20 20 20 still many.
28a0: 20 20 20 62 75 67 73 2e 0a 0a 20 20 20 20 20 20 bugs...
28b0: 20 54 68 65 72 65 20 20 61 72 65 20 20 74 79 70 There are typ
28c0: 69 63 61 6c 6c 79 20 20 62 75 69 6c 74 2d 69 6e ically built-in
28d0: 20 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 limits on the
28e0: 73 69 7a 65 20 6f 66 20 74 68 65 0a 0a 0a 0a 20 size of the....
28f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2900: 20 20 20 20 20 20 20 20 31 34 20 4a 61 6e 75 61 14 Janua
2910: 72 79 20 32 30 30 31 20 20 20 20 20 20 20 20 20 ry 2001
2920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 3
2930: 0a 0a 0a 0a 0a 0a 56 41 43 41 4c 4c 28 33 29 20 ......VACALL(3)
2940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 41 VA
2970: 43 41 4c 4c 28 33 29 0a 0a 0a 20 20 20 20 20 20 CALL(3)...
2980: 20 61 72 67 75 6d 65 6e 74 2d 6c 69 73 74 2c 20 argument-list,
2990: 77 68 69 63 68 20 6d 61 79 20 61 6c 73 6f 20 20 which may also
29a0: 69 6e 63 6c 75 64 65 20 20 74 68 65 20 20 73 69 include the si
29b0: 7a 65 20 20 6f 66 20 20 61 6e 79 0a 20 20 20 20 ze of any.
29c0: 20 20 20 73 74 72 75 63 74 75 72 65 20 61 72 67 structure arg
29d0: 75 6d 65 6e 74 73 2e 0a 0a 20 20 20 20 20 20 20 uments...
29e0: 54 68 65 20 20 64 65 63 69 73 69 6f 6e 20 77 68 The decision wh
29f0: 65 74 68 65 72 20 61 20 73 74 72 75 63 74 20 69 ether a struct i
2a00: 73 20 74 6f 20 62 65 20 72 65 74 75 72 6e 65 64 s to be returned
2a10: 20 69 6e 20 72 65 67 69 73 2d 0a 20 20 20 20 20 in regis-.
2a20: 20 20 74 65 72 73 20 6f 72 20 69 6e 20 6d 65 6d ters or in mem
2a30: 6f 72 79 20 63 6f 6e 73 69 64 65 72 73 20 6f 6e ory considers on
2a40: 6c 79 20 20 74 68 65 20 20 73 74 72 75 63 74 27 ly the struct'
2a50: 73 20 20 73 69 7a 65 20 20 61 6e 64 0a 20 20 20 s size and.
2a60: 20 20 20 20 61 6c 69 67 6e 6d 65 6e 74 2e 20 20 alignment.
2a70: 54 68 69 73 20 20 69 73 20 69 6e 61 63 63 75 72 This is inaccur
2a80: 61 74 65 3a 20 66 6f 72 20 65 78 61 6d 70 6c 65 ate: for example
2a90: 2c 20 67 63 63 20 6f 6e 20 6d 36 38 6b 2d 0a 20 , gcc on m68k-.
2aa0: 20 20 20 20 20 20 6e 65 78 74 20 72 65 74 75 72 next retur
2ab0: 6e 73 20 73 08 73 74 08 74 72 08 72 75 08 75 63 ns s.st.tr.ru.uc
2ac0: 08 63 74 08 74 20 7b 08 7b 20 20 63 08 63 68 08 .ct.t {.{ c.ch.
2ad0: 68 61 08 61 72 08 72 20 20 61 08 61 2c 08 2c 62 ha.ar.r a.a,.,b
2ae0: 08 62 2c 08 2c 63 08 63 3b 08 3b 20 20 7d 08 7d .b,.,c.c;.; }.}
2af0: 20 20 69 6e 20 20 72 65 67 69 73 74 65 72 73 20 in registers
2b00: 20 61 6e 64 0a 20 20 20 20 20 20 20 73 08 73 74 and. s.st
2b10: 08 74 72 08 72 75 08 75 63 08 63 74 08 74 20 20 .tr.ru.uc.ct.t
2b20: 7b 08 7b 20 63 08 63 68 08 68 61 08 61 72 08 72 {.{ c.ch.ha.ar.r
2b30: 20 61 08 61 5b 08 5b 33 08 33 5d 08 5d 3b 08 3b a.a[.[3.3].];.;
2b40: 20 7d 08 7d 20 69 6e 20 6d 65 6d 6f 72 79 2c 20 }.} in memory,
2b50: 61 6c 74 68 6f 75 67 68 20 62 6f 74 68 20 74 79 although both ty
2b60: 70 65 73 20 68 61 76 65 0a 20 20 20 20 20 20 20 pes have.
2b70: 74 68 65 20 73 61 6d 65 20 73 69 7a 65 20 61 6e the same size an
2b80: 64 20 74 68 65 20 73 61 6d 65 20 61 6c 69 67 6e d the same align
2b90: 6d 65 6e 74 2e 0a 0a 20 20 20 20 20 20 20 3c 08 ment... <.
2ba0: 3c 76 08 76 61 08 61 63 08 63 61 08 61 6c 08 6c <v.va.ac.ca.al.l
2bb0: 6c 08 6c 2e 08 2e 68 08 68 3e 08 3e 20 20 63 61 l.l...h.h>.> ca
2bc0: 6e 6e 6f 74 20 20 62 65 20 20 69 6e 63 6c 75 64 nnot be includ
2bd0: 65 64 20 20 20 77 68 65 6e 20 20 20 3c 08 3c 76 ed when <.<v
2be0: 08 76 61 08 61 72 08 72 61 08 61 72 08 72 67 08 .va.ar.ra.ar.rg.
2bf0: 67 73 08 73 2e 08 2e 68 08 68 3e 08 3e 20 20 20 gs.s...h.h>.>
2c00: 6f 72 0a 20 20 20 20 20 20 20 3c 08 3c 73 08 73 or. <.<s.s
2c10: 74 08 74 64 08 64 61 08 61 72 08 72 67 08 67 2e t.td.da.ar.rg.g.
2c20: 08 2e 68 08 68 3e 08 3e 20 69 73 20 69 6e 63 6c ..h.h>.> is incl
2c30: 75 64 65 64 2e 20 20 28 4e 61 6d 65 20 63 6c 61 uded. (Name cla
2c40: 73 68 20 66 6f 72 20 76 08 76 61 08 61 5f 08 5f sh for v.va.a_._
2c50: 61 08 61 6c 08 6c 69 08 69 73 08 73 74 08 74 2e a.al.li.is.st.t.
2c60: 29 0a 0a 20 20 20 20 20 20 20 54 68 65 20 61 72 ).. The ar
2c70: 67 75 6d 65 6e 74 20 6c 69 73 74 20 63 61 6e 20 gument list can
2c80: 6f 6e 6c 79 20 62 65 20 77 61 6c 6b 65 64 20 6f only be walked o
2c90: 6e 63 65 2e 0a 0a 20 20 20 20 20 20 20 54 68 65 nce... The
2ca0: 20 20 75 73 65 20 20 6f 66 20 20 74 68 65 20 20 use of the
2cb0: 67 6c 6f 62 61 6c 20 20 76 61 72 69 61 62 6c 65 global variable
2cc0: 20 76 08 76 61 08 61 63 08 63 61 08 61 6c 08 6c v.va.ac.ca.al.l
2cd0: 6c 08 6c 5f 08 5f 66 08 66 75 08 75 6e 08 6e 63 l.l_._f.fu.un.nc
2ce0: 08 63 74 08 74 69 08 69 6f 08 6f 6e 08 6e 20 69 .ct.ti.io.on.n i
2cf0: 73 20 6e 6f 74 0a 20 20 20 20 20 20 20 72 65 65 s not. ree
2d00: 6e 74 72 61 6e 74 2e 20 54 68 69 73 20 69 73 20 ntrant. This is
2d10: 66 69 78 65 64 20 69 6e 20 74 68 65 20 63 08 63 fixed in the c.c
2d20: 61 08 61 6c 08 6c 6c 08 6c 62 08 62 61 08 61 63 a.al.ll.lb.ba.ac
2d30: 08 63 6b 08 6b 28 33 29 20 70 61 63 6b 61 67 65 .ck.k(3) package
2d40: 2e 0a 0a 0a 50 08 50 4f 08 4f 52 08 52 54 08 54 ....P.PO.OR.RT.T
2d50: 49 08 49 4e 08 4e 47 08 47 0a 20 20 20 20 20 20 I.IN.NG.G.
2d60: 20 4b 6e 6f 77 6c 65 64 67 65 20 61 62 6f 75 74 Knowledge about
2d70: 20 61 72 67 75 6d 65 6e 74 20 70 61 73 73 69 6e argument passin
2d80: 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 20 63 61 g conventions ca
2d90: 6e 20 62 65 20 20 66 6f 75 6e 64 0a 20 20 20 20 n be found.
2da0: 20 20 20 69 6e 20 20 74 68 65 20 20 67 63 63 20 in the gcc
2db0: 73 6f 75 72 63 65 2c 20 66 69 6c 65 20 67 63 63 source, file gcc
2dc0: 2d 32 2e 36 2e 33 2f 63 6f 6e 66 69 67 2f 5f 08 -2.6.3/config/_.
2dd0: 63 5f 08 70 5f 08 75 2f 5f 08 63 5f 08 70 5f 08 c_.p_.u/_.c_.p_.
2de0: 75 2e 68 2c 20 73 65 63 2d 0a 20 20 20 20 20 20 u.h, sec-.
2df0: 20 74 69 6f 6e 20 22 53 74 61 63 6b 20 6c 61 79 tion "Stack lay
2e00: 6f 75 74 3b 20 66 75 6e 63 74 69 6f 6e 20 65 6e out; function en
2e10: 74 72 79 2c 20 65 78 69 74 20 61 6e 64 20 63 61 try, exit and ca
2e20: 6c 6c 69 6e 67 2e 22 0a 0a 20 20 20 20 20 20 20 lling."..
2e30: 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 The implementati
2e40: 6f 6e 20 6f 66 20 76 61 72 61 72 67 73 20 66 6f on of varargs fo
2e50: 72 20 67 63 63 20 63 61 6e 20 62 65 20 66 6f 75 r gcc can be fou
2e60: 6e 64 20 69 6e 20 20 74 68 65 0a 20 20 20 20 20 nd in the.
2e70: 20 20 67 63 63 20 73 6f 75 72 63 65 2c 20 66 69 gcc source, fi
2e80: 6c 65 73 20 67 63 63 2d 32 2e 36 2e 33 2f 67 69 les gcc-2.6.3/gi
2e90: 6e 63 6c 75 64 65 2f 76 61 2a 2e 68 2e 0a 0a 20 nclude/va*.h...
2ea0: 20 20 20 20 20 20 67 63 63 27 73 20 20 5f 5f 62 gcc's __b
2eb0: 75 69 6c 74 69 6e 5f 73 61 76 65 72 65 67 73 28 uiltin_saveregs(
2ec0: 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 ) function is de
2ed0: 66 69 6e 65 64 20 69 6e 20 74 68 65 20 67 63 63 fined in the gcc
2ee0: 0a 20 20 20 20 20 20 20 73 6f 75 72 63 65 2c 20 . source,
2ef0: 66 69 6c 65 20 67 63 63 2d 32 2e 36 2e 33 2f 6c file gcc-2.6.3/l
2f00: 69 62 67 63 63 32 2e 63 2e 0a 0a 0a 41 08 41 55 ibgcc2.c....A.AU
2f10: 08 55 54 08 54 48 08 48 4f 08 4f 52 08 52 0a 20 .UT.TH.HO.OR.R.
2f20: 20 20 20 20 20 20 42 72 75 6e 6f 20 48 61 69 62 Bruno Haib
2f30: 6c 65 20 3c 62 72 75 6e 6f 40 63 6c 69 73 70 2e le <bruno@clisp.
2f40: 6f 72 67 3e 0a 0a 0a 41 08 41 43 08 43 4b 08 4b org>...A.AC.CK.K
2f50: 4e 08 4e 4f 08 4f 57 08 57 4c 08 4c 45 08 45 44 N.NO.OW.WL.LE.ED
2f60: 08 44 47 08 47 45 08 45 4d 08 4d 45 08 45 4e 08 .DG.GE.EM.ME.EN.
2f70: 4e 54 08 54 53 08 53 0a 20 20 20 20 20 20 20 4d NT.TS.S. M
2f80: 61 6e 79 20 69 64 65 61 73 20 61 6e 64 20 61 20 any ideas and a
2f90: 6c 6f 74 20 6f 66 20 63 6f 64 65 20 77 65 72 65 lot of code were
2fa0: 20 20 63 72 69 62 62 65 64 20 20 66 72 6f 6d 20 cribbed from
2fb0: 20 74 68 65 20 20 67 63 63 0a 20 20 20 20 20 20 the gcc.
2fc0: 20 73 6f 75 72 63 65 2e 0a 0a 0a 0a 0a 0a 0a 0a source.........
2fd0: 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 20 20 20 20 ............
2fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2ff0: 20 20 20 20 20 31 34 20 4a 61 6e 75 61 72 79 20 14 January
3000: 32 30 30 31 20 20 20 20 20 20 20 20 20 20 20 20 2001
3010: 20 20 20 20 20 20 20 20 20 20 20 20 34 0a 0a 0a 4...