From:	MERC::"uunet!WKUVX1.BITNET!FILESERV-Mgr" 22-APR-1992 17:41:36.45
To:	galaxy::gleeve
CC:	
Subj:	BLISS-ARTICLE-PS.07_OF_07

-+-+-+-+-+-+-+-+ START OF PART 7 -+-+-+-+-+-+-+-+
Xb(c)o(hanges)h(in)e(the)i(pro)q(cessing)g(algorithm)d(are)0
X1113 y(required.)0 1213 y Fu(4.)25 b(Mo)n(re)19 b(on)f(Data)h(Structures)0
X1263 y Ft(The)g(example)e(ab)q(o)o(v)o(e)i(has)g(the)g(disadv)n(an)o(tage)f
X(of)g(using)0 1312 y(the)i(size)f(of)g(the)g(arra)o(y)g(explicitly)f(in)g
X(the)i(access)h(algo-)0 1362 y(rithm,)10 b(so)h(that)h(separate)g(structure)
Vi
X(declarations)d(w)o(ould)0 1412 y(b)q(e)20 b(required)h(for)e(arra)o(ys)h(of
V)
Xf(di\013eren)o(t)h(size.)36 b(It)20 b(should)0 1462 y(b)q(e)15
Xb(p)q(ossible)g(for)g(ob)o(vious)f(reasons)h(to)g(parameterize)g(the)0
X1512 y(dep)q(endency)d(of)d(the)i(size)f(of)g(the)g(information)d(on)o(to)j
X(whic)o(h)0 1562 y(the)16 b(structure)i(is)d(going)f(to)i(b)q(e)g(mapp)q(ed.
V)
X22 b(The)16 b(required)0 1611 y(\015exibilit)o(y)i(is)h(ac)o(hiev)o(ed)g(b)o
X(y)g(observing)g(that)h(un)o(til)e(no)o(w)0 1661 y(it)e(only)f(mak)o(es)g
X(sense)j(to)e(use)i(\\dotted)e(formals")e(in)i(the)0 1711 y(access)21
Xb(algorithm,)c(b)q(ecause)j Fs(bliss)f Ft(has)g(a)f(strict)i(v)n(alue)0
X1761 y(substitution)10 b(of)f(parameters.)16 b(Th)o(us,)11
Xb(if)d(w)o(e)i(wish)g(\(and)f(w)o(e)0 1811 y(do)i(so)h(wish\),)f(another)h
X(in)o(terpretation)g(can)f(b)q(e)h(placed)g(on)0 1860 y(the)k(o)q(ccurrence)
Vj
X(of)c(\\undotted)h(formals")e(in)h(the)i(access)0 1910 y(algorithm.)h(In)d
X(particular,)f(w)o(e)h(shall)f(use)h(the)h(undotted)0 1960
Xy(formal)23 b(parameter)i(names)g(to)g(denote)h(the)g(v)n(alue)f(of)0
X2010 y(parameters)19 b(asso)q(ciated)g(with)f(particular)g(instances)i(of)0
X2060 y(a)12 b(structure)i(\(as)e(distinct)h(from)d(instances)j(of)f(accesses
V)
Xj(to)0 2109 y(that)f(structure\).)50 2159 y(Using)19 b(\\)p
XFm(f)p Ft(")g(and)h(\\)p Fm(g)p Ft(")e(to)i(em)o(brace)f(optional)f(syn)o
X(tax)0 2209 y(\(i.e.)11 b(\\zero)i(or)f(one)g(instance)h(of"\),)e(the)h
XFs(bliss)g Fg(structure)0 2259 y Ft(declaration)i(is)f(of)h(the)g(form)50
X2338 y Fl(structure)h Fi(h)p Fj(name)p Fi(i)p Fl(`5B)p Fi(h)p
XFj(formal)f(parameter)g(list)p Fi(i)p Fl(`5D)109 2383 y Fj(=)c
XFi(f)p Fj(`5B)p Fk(\017)195 2387 y Fe(1)212 2383 y Fi(f)p Fk(;)c(\017)264
X2387 y Fe(2)281 2383 y Fi(g)p Fj(`5D)p Fi(g)p Fk(\017)346 2387
Xy Fe(3)0 2466 y Ft(where)22 b Fh(\017)144 2472 y Ff(3)184 2466
Xy Ft(is)f(the)h(accessing)h(algorithm)18 b(as)k(b)q(efore,)h
XFh(\017)915 2472 y Ff(1)0 2516 y Ft(is)f(an)g(expression)h(whose)g(v)n(alue)
Ve
X(determines)i(the)g(size)0 2566 y(\(in)h(w)o(ords\))g(of)f(an)h(instance)g
X(of)g(this)g(structure,)k(and)0 2616 y Fh(\017)17 2622 y Ff(2)60
X2616 y Ft(is)d(an)f(expression)i(whose)f(v)n(alue)g(is)f(the)i(name)d(of)101
V7
X42 y(a)d(user)i(de\014ned)g(dynamic)e(allo)q(cation)f(function.)39
Xb(An)o(y)1017 91 y(of)19 b(the)i(expressions)h Fh(\017)1388
X97 y Ff(1)1407 91 y Ft(,)f Fh(\017)1457 97 y Ff(2)1476 91 y
XFt(,)g(or)f Fh(\017)1583 97 y Ff(3)1622 91 y Ft(\(but)h(esp)q(ecially)g
XFh(\017)1932 97 y Ff(1)1017 141 y Ft(and)16 b Fh(\017)1117
X147 y Ff(3)1135 141 y Ft(\))g(ma)o(y)f(in)o(v)o(olv)o(e)g(undotted)h(formals
V)
Xf(and)h(th)o(us)g(b)q(e)1017 191 y(instance)j(sp)q(eci\014c.)32
Xb(Consider)19 b(the)g(follo)o(wing)d(example,)1017 241 y(whic)o(h)11
Xb(also)g(illustrates)h(the)h(extension)f(to)g(the)h(allo)q(cation)1017
X291 y(declarations:)1066 369 y Fl(b)q(egin)1111 415 y(structure)i
XFk(ar)q(y)q Fj(2`5B)p Fk(i;)7 b(j)r Fj(`5D)j(=)g(`5B)p Fk(i)f Fi(\003)f
XFk(j)r Fj(`5D\()p Fk(:ar)q(y)q Fj(2)h(+)g Fk(:i)f Fi(\003)h Fk(j)h
XFj(+)e Fk(:j)r Fj(\))p Fl(;)1111 461 y(o)o(wn)14 b Fk(ar)q(y)q
XFj(2)i Fk(x)p Fl(:)p Fk(y)q Fl(:)p Fk(z)r Fj(`5B10)p Fk(;)6 b
XFj(10`5D)p Fl(;)1111 505 y(.)1111 522 y(.)1111 538 y(.)1066 584
Xy(end;)1017 667 y Ft(This)14 b(is)g(essen)o(tially)g(the)h(same)e(example)g
X(as)h(has)g(already)1017 717 y(b)q(een)d(presen)o(ted)i(of)d(three,)i(t)o(w)
Vo
X(o-dimensional,)7 b(10)r Fm(\002)r Ft(10)k(ar-)1017 767 y(ra)o(ys.)16
Xb(Ho)o(w)o(ev)o(er,)10 b(the)g(information)d(previously)i(con)o(tained)1017
X816 y(in)k(a)h Fg(map)g Ft(declaration)f(has)i(no)o(w)e(b)q(een)i(included)g
X(in)e(the)1017 866 y(allo)q(cation)f(declaration.)17 b(More)d(imp)q(ortan)o
X(tly)m(,)d(note)j(that)1017 916 y(undotted)22 b(formal)d(names,)j(whic)o(h)g
X(corresp)q(ond)h(to)e(the)1017 966 y(\\instance)c(actuals:)24
Xb(10,10")15 b(are)i(used)h(to)f(compute)f(the)1017 1016 y(size)22
Xb(of)e(the)i(instances`7Cas)h(w)o(ell)d(as)i(in)f(the)h(accessing)1017
X1065 y(algorithm)d(itself.)42 b(\(As)22 b(in)g Fs(algol)h Ft(declarations,)g
X(the)1017 1115 y(instance-actuals)17 b(distribute)g(o)o(v)o(er)g(the)h(names
V)
Xe(to)h(their)1017 1165 y(left.\))31 b(Th)o(us)18 b(the)h(single)f(structure)
Vi
X(declaration,)f Fh(ar)q(y)q Ft(2,)1017 1215 y(ma)o(y)14 b(b)q(e)j(used)h(for
V)
Xe(other)h(instances)h(of)d(similarly)f(struc-)1017 1265 y(tured)i(segmen)o
X(ts)g(whic)o(h)g(happ)q(en)g(to)g(b)q(e)h(of)e(a)h(size)g(other)1017
X1315 y(than)d(10)c Fm(\002)h Ft(10.)1066 1364 y(The)i(form)e(of)h(allo)q
X(cation)g(and)g(structure)j(declarations)1017 1414 y(illustrated)g
X(previously)h(are)h(instances)g(of)f(the)g(extended)1017 1464
Xy(syn)o(tax)e(in)h(whic)o(h)g(the)g(ob)o(vious)f(defaults)h(are)g(c)o(hosen.
V)
X1066 1514 y(Dynamic)26 b(allo)q(cation,)k(of)d(an)h(admittedly)e(simple)1017
X1564 y(kind,)12 b(is)i(illustrated)g(b)o(y)g(the)g(follo)o(wing)d(example:)
X1066 1642 y Fl(b)q(egin)1092 1688 y(o)o(wn)h Fk(space)p Fj(`5B10000`5D)p
XFl(;)i(o)o(wn)e Fk(spaceptr)q Fl(;)i(external)f Fk(er)q(r)q(or)q
XFl(;)1096 1734 y(function)f Fk(l)q(ocspacemg)q(r)q Fj(\()p
XFk(tog)q(;)6 b(numb;)h(base)p Fj(\))k(=)1125 1779 y Fl(if)j
XFk(:tog)1125 1825 y Fl(then)1155 1871 y(b)q(egin)1137 1916
Xy(if)c Fj(\()p Fk(spaceptr)j Fi( )e Fk(:spaceptr)t Fj(+)s Fk(:numb)p
XFj(\))g Fk(>)g Fj(10000)h Fl(then)1199 1962 y(return)j Fk(er)q(r)q(or)q
XFj(\(\))p Fl(;)1155 2008 y Fk(space)8 b Fj(+)h Fk(:spaceptr)g
XFi(\000)g Fk(:numb)p Fl(;)1155 2053 y(end)1125 2099 y(else)15
Xb Fj(\()p Fl(if)f Fj(\()p Fk(space)8 b Fj(+)h Fk(:spaceptr)q
XFj(\))h Fk(>)h(:base)k Fl(then)1199 2145 y Fk(spaceptr)d Fi( )f
XFk(:base)e Fi(\000)f Fk(space)p Fj(\))p Fl(;)1096 2190 y(structure)15
Xb Fk(l)q(ar)q(y)q Fj(`5B)p Fk(i;)7 b(j)r Fj(`5D)j(=)1214 2236 y(`5B)p
XFk(i)e Fi(\003)h Fk(j;)d(l)q(ocspacemg)q(r)q Fj(`5D\()p Fk(:l)q(ar)q(y)k
XFj(+)e Fk(:i)g Fi(\003)h Fk(j)h Fj(+)f Fk(:j)r Fj(\))p Fl(;)1096
X2282 y(lo)q(cal)14 b Fk(l)q(ar)q(y)i(x)p Fj(`5B)p Fk(:n;)6 b(:m)i
XFj(+)g(1`5D)p Fl(,)15 b Fk(y)q Fj(`5B3)p Fk(;)6 b Fj(5`5D)p Fl(;)1096
X2326 y(.)1096 2343 y(.)1096 2359 y(.)1066 2405 y(end)1017 2488
Xy Ft(The)23 b(lo)q(cal)f(allo)q(cation)g(declaration)h(in)g(this)g(example,)
X1017 2538 y Fg(lo)q(cal)e Fh(l)q(ar)q(y)j(x)7 b(:)g(:)g(:)n
XFt(,)21 b(con)o(tains)e(expressions)j(whic)o(h)d(m)o(ust)1017
X2588 y(b)q(e)c(ev)n(aluated)f(at)g(run-time)f(as)i(instance-actuals;)g(hence
V)
X1017 2637 y(dynamic)25 b(allo)q(cation)h(is)h(required.)59
Xb(Note)28 b(that)f(the)954 2770 y(10)p eop
X%%Page: 11 11
Xbop 0 42 a Ft(structure)17 b(declaration)e(for)g Fh(l)q(ar)q(y)i
XFt(con)o(tains)e(the)g(name)f(of)0 91 y(the)20 b(function)g
XFh(l)q(ocspacemg)q(r)i Ft(in)e(the)g(p)q(osition)g(denoted)0
X141 y Fh(\017)17 147 y Ff(2)60 141 y Ft(in)k(the)i(extended)g(structure)h
X(declaration)d(syn)o(tax.)0 191 y(In)e(fact)g(the)h(v)n(alue)e(of)g
XFh(\017)417 197 y Ff(2)458 191 y Ft(is)h(required)h(to)e(b)q(e)i(that)f(of)0
X241 y(a)g(function)g(with)g(three)i(formal)c(parameters,)k(sa)o(y)e
XFh(pl)q Ft(,)0 291 y Fh(p)p Ft(2,)e(and)f Fh(p)p Ft(3.)33 b(This)20
Xb(function)f(is)g(automatically)d(called)0 340 y(\(p)q(ossibly)k(sev)o(eral)
Vi
X(times\))d(at)i(en)o(try)g(and)f(exit)h(from)e(a)0 390 y(blo)q(c)o(k)24
Xb(con)o(taining)g(an)h(allo)q(cation)e(declaration)i(whic)o(h)0
X440 y(sp)q(eci\014es)18 b(a)d(structure)j(declaration)d(whic)o(h)h(men)o
X(tions)e(it.)0 490 y(The)g(in)o(terpretation)h(of)e(the)h(parameters)g(is:)5
V0
X540 y Fh(p)p Ft(1)d(=)h(1)42 b(The)14 b(function)g(is)g(to)g(allo)q(cate)g(a
V)
Xf(segmen)o(t)h(of)0 589 y(size)c Fh(p)p Ft(2)f(\(w)o(ords\),)i(and)e(return)
Vi
X(a)e(p)q(oin)o(ter)g(to)h(this)f(segmen)o(t.)0 639 y Fh(p)p
XFt(2)20 b(will)e(b)q(e)j(the)f(v)n(alue)g(of)f(the)h(size)h(expression)g(in)
Vf
X(the)0 689 y(structure)c(declaration.)i Fh(p)p Ft(3)13 b(has)h(no)g(meaning.
V)
X50 739 y Fh(p)p Ft(1)e(=)i(0)41 b(The)15 b(function)f(is)h(to)g(deallo)q
X(cate)f(a)h(segmen)o(t)0 789 y(of)d Fh(p)p Ft(2)g(w)o(ords)h(whose)g(b)q
X(eginning)e(is)i(p)q(oin)o(ted)f(to)g(b)o(y)h Fh(p)p Ft(3)f(\()p
XFh(p)p Ft(3)0 839 y(is)f(the)g(v)n(alue)f(returned)i(b)o(y)f(a)f(previous)h
X(call)f(with)g Fh(p)p Ft(1)h(=)h(1\).)0 888 y(The)i(v)n(alue)e(of)g(the)i
X(function)f(in)g(this)g(case)h(is)f(imma)o(terial.)50 938 y(Th)o(us,)19
Xb(in)f(the)g(example)f(instances)j(of)d(structures)k(of)0 988
Xy(t)o(yp)q(e)h Fh(l)q(ar)q(y)h Ft(are)f(allo)q(cated)f(from)f(the)i(segmen)o
X(t)g(named)0 1038 y Fh(space)p Ft(.)39 b(Examination)18 b(of)i(the)i
X(function)e Fh(l)q(ocspacemg)q(r)0 1088 y Ft(rev)o(eals)d(that)f(it)g(allo)q
X(cates)h(on)f(a)g(last-in-\014rst-out)g(basis,)0 1137 y(and)d(hence)h(this)f
X(particular)g(allo)q(cation)e(function)h(is)h(only)0 1187 y(suitable)23
Xb(for)g(lo)q(cal)g(\(stac)o(k)h(discipline\))f(v)n(ariables.)46
Xb(It)0 1237 y(should)23 b(also)g(b)q(e)h(noted)g(that)g(the)g(example)e(ab)q
X(o)o(v)o(e)i(is)0 1287 y(similar)14 b(to)j(the)g(follo)o(wing)d(blo)q(c)o(k,
V)
Xj(whic)o(h)f(uses)i(only)e(the)0 1337 y(simpler)f(declarations)g(of)h(the)g
X(previous)g(section.)25 b(\(Note)0 1386 y(that)17 b(the)h(example)e(is)h(not
V)
Xg(completely)f(equiv)n(alen)o(t)h(due)0 1436 y(to)d(p)q(ossible)g(iden)o
X(ti\014er)g(con\015icts.\))50 1515 y Fl(b)q(egin)79 1561 y(o)o(wn)g
XFk(space)p Fj(`5B10000`5D)p Fl(;)i(o)o(wn)e Fk(spaceptr)q Fl(;)79
X1606 y(function)e Fk(l)q(ocspacemg)q(r)q Fj(\()p Fk(tog)q(;)7
Xb(numb;)f(base)p Fj(\))11 b(=)123 1652 y Fl(\045)k Fj(same)e(as)g(ab)q(o)o(v
V)
Xo(e)j Fl(\045)79 1698 y(bind)d Fk(i)p Fj(1)e(=)g Fk(:n;)5 b(j)r
XFj(1)11 b(=)g Fk(:m)d Fj(+)g(1)p Fl(;)79 1743 y(structure)15
Xb Fk(l)q(ar)q(y)q Fj(1`5B)p Fk(i;)8 b(j)r Fj(`5D)i(=)g(\()p Fk(:l)q(ar)q(y)q
XFj(1)g(+)e Fk(:i)g Fi(\003)h Fk(j)r Fj(1)g(+)f Fk(:j)r Fj(\))p
XFl(;)79 1789 y(bind)13 b Fk(i)p Fj(2)e(=)g(3)p Fl(,)k Fk(j)r
XFj(2)10 b(=)h(5)p Fl(;)79 1835 y(structure)k Fk(l)q(ar)q(y)q
XFj(2`5B)p Fk(i;)8 b(j)r Fj(`5D)i(=)g(\()p Fk(:l)q(ar)q(y)q Fj(2)g(+)e
XFk(:i)g Fi(\003)h Fk(j)r Fj(2)g(+)f Fk(:j)r Fj(\))p Fl(;)79
X1880 y(bind)k Fk(x)f Fj(=)f Fk(l)q(ocspacemg)q(r)q Fj(\(1)p
XFk(;)d(i)p Fj(1)h Fi(\003)g Fk(j)r Fj(1)p Fk(;)e Fj(0\))p Fl(;)15
Xb(map)g Fk(l)q(ar)q(y)q Fj(1)g Fk(x)p Fl(;)79 1926 y(bind)e
XFk(y)f Fj(=)e Fk(l)q(ocspacemg)q(r)q Fj(\(1)p Fk(;)d(i)p Fj(2)i
XFi(\003)f Fk(j)r Fj(2)p Fk(;)e Fj(0\))p Fl(;)16 b(map)e Fk(l)q(ar)q(y)q
XFj(2)i Fk(y)q Fl(;)79 1970 y(.)79 1987 y(.)79 2004 y(.)79 2049
Xy Fk(l)q(ocspacemg)q(r)q Fj(\(0)p Fk(;)7 b(i)p Fj(1)h Fi(\003)h
XFk(j)r Fj(1)p Fk(;)d(x)p Fj(\))p Fl(;)79 2095 y Fk(l)q(ocspacemg)q(r)q
XFj(\(0)p Fk(;)h(i)p Fj(2)h Fi(\003)h Fk(j)r Fj(2)p Fk(;)d(y)q
XFj(\))p Fl(;)50 2141 y(end)0 2224 y Ft(This)20 b(example)g(illustrates)g
X(that)h(the)g(extended)h(decla-)0 2273 y(rations)13 b(in)o(tro)q(duce)h(no)e
X(additional)g(p)q(o)o(w)o(er;)h(ho)o(w)o(ev)o(er,)g(the)0 2323
Xy(extensions)e(do)f(p)q(ermit)g(considerable)h(simpli\014cation)d(and)0
X2373 y(clarit)o(y)m(.)50 2423 y(The)21 b(requiremen)o(t)h(that)f(the)h
X(programmer)d(pro)o(vide)0 2473 y(his)12 b(o)o(wn)f(dynamic)g(allo)q(cation)
Vf
X(function)i(w)o(as)g(in)o(tro)q(duced)0 2522 y(principally)k(to)i(a)o(v)o
X(oid)e(prerequisite)j(run-time)e(supp)q(ort.)0 2572 y(Ho)o(w)o(ev)o(er,)27
Xb(the)e(e\013ect)h(is)e(that)h(the)g(user)g(ma)o(y)d(de\014ne)0
X2622 y(allo)q(cation)f(p)q(olicies)i(particularly)g(appropriate)g(to)g(his)
X1017 42 y(o)o(wn)12 b(application.)k(Indeed,)d(one)g(migh)o(t)e(exp)q(ect)j
X(di\013eren)o(t)1017 91 y(allo)q(cation)20 b(p)q(olicies)h(to)h(b)q(e)g(asso
V)
Xq(ciated)h(with)e(di\013eren)o(t)1017 141 y(structures,)g(or)d(ev)o(en)h
X(di\013eren)o(t)g(instances)g(of)f(the)h(same)1017 191 y(structure,)c(in)f(a
V)
Xf(single)h(program.)1017 291 y Fu(Conclusions)1017 390 y Ft(W)m(e)g(ha)o(v)o
X(e)i(attempted)f(to)g(presen)o(t)i(ab)q(o)o(v)o(e)e(the)h(main)d(fea-)1017
X440 y(tures)k(of)f Fs(bliss)p Ft(,)h(a)f(language)f(w)o(e)i(feel)g(esp)q
X(ecially)f(suited)1017 490 y(to)25 b(that)g(application)e(area)j(usually)e
X(called)h(\\systems)1017 540 y(programmi)o(ng.)o(")16 b(A)o(t)e(least)g(one)
Vg
X(p)q(ossible)h(in)o(terpretation)1017 589 y(of)22 b(this)h(description)g(is)
Vg
X(as)g(an)g(indirect)g(de\014nition)g(of)1017 639 y(the)d(system)g
X(programming)c(\\problem)j(area.")36 b(In)20 b(the)1017 689
Xy(simplest)11 b(case,)i(this)g(manifests)e(itself)i(in)f(our)g(break)h(with)
X1017 739 y(the)e(traditional)d(in)o(terpretation)j(of)f(iden)o(ti\014ers)h
X(in)f(higher-)1017 789 y(lev)o(el)19 b(languages)h(as)g(the)g(consequen)o(t)
Vi
X(demand)d(on)g(the)1017 839 y(programmer)12 b(to)i(b)q(e)h(consciously)g(a)o
X(w)o(are)f(of)g(the)h(distinc-)1017 888 y(tion)f(b)q(et)o(w)o(een)j(name)d
X(and)h(v)n(alue.)22 b(Similarl)o(y)m(,)12 b(the)k(struc-)1017
X938 y(ture)f(mec)o(hanism)e(ma)o(y)g(b)q(e)j(in)o(terpreted)g(as)f(a)g
X(statemen)o(t)1017 988 y(of)h(our)h(judgemen)o(t)g(as)g(to)g(the)h(extreme)f
X(imp)q(ortance)g(of)1017 1038 y(the)11 b(represen)o(tation,)i(mo)q
X(di\014cation,)c(allo)q(cation)h(issues)i(in)1017 1088 y(systems)i(programmi
V)
Xo(ng`7Ca)o(nd)e(hence)j(that)f(these)i(issues)1017 1137 y(m)o(ust)k(b)q(e)h
X(explicitly)g(at)g(the)g(programmer's)e(atten)o(tion)1017 1187
Xy(and)9 b(con)o(trol.)16 b(The)10 b(decision)f(to)h(exclude)g(the)g
XFg(go)h(to)d Ft(state-)1017 1237 y(men)o(t)18 b(is)h(similarly)d(a)j
X(consequence)j(of)d(our)g(judgemen)o(t)1017 1287 y(as)g(to)g(the)h(imp)q
X(ortance)f(of)g(writing)f(highly)h(structured)1017 1337 y(programs)8
Xb(so)i(that)g(they)h(ma)o(y)d(b)q(e)j(read,)g(understo)q(o)q(d,)g(and)1017
X1386 y(mo)q(di\014ed.)1066 1436 y(Considerable)18 b(exp)q(erience)i(has)e(b)
Vq
X(een)h(gained)f(in)f(the)1017 1486 y(use)11 b(of)g Fs(bliss)f
XFt(for)h(writing)f(systems.)17 b(The)12 b Fs(bliss)e Ft(compiler)1017
X1536 y(itself,)j(an)i Fs(apl)g Ft(system,)f(a)h Fs(w)l(a)m(tf)o(or)p
XFt(-lik)o(e)f(fast)h Fs(f)o(or)m(tran)1017 1586 y Ft(compiler,)k
XFs(simula)p Ft(-lik)o(e)h(ev)o(en)o(t)h(based)g(sim)o(ulation)d(sys-)1017
X1636 y(tem,)10 b(c)o(hess)k(pla)o(ying)c(programs,)g(input-output)i
X(routines,)1017 1685 y(debugging)k(aids,)h(parts)h(of)f(an)g(op)q(erating)g
X(system,)g(and)1017 1735 y(so)f(on,)g(ha)o(v)o(e)g(b)q(een)h(written)g(in)e
XFs(bliss)p Ft(.)25 b(This)16 b(represen)o(ts)1017 1785 y(on)g(the)i(order)g
X(of)f(100,000)e(lines)i(of)f(co)q(de,)j(and)d(forms)g(a)1017
X1835 y(reasonable)d(base)g(for)g(forming)e(some)h(conclusions)h(ab)q(out)101
V7
X1885 y(the)i(language.)21 b(By)15 b(suc)o(h)h(measures)f(as)g(readabilit)o(y
V)
Xf(and)1017 1934 y(mo)q(di\014abili)o(t)o(y)m(,)8 b(lines)k(of)f(\(debugged\)
V)
Xi(co)q(de)f(pro)q(duced)h(p)q(er)1017 1984 y(programmer)i(p)q(er)k(da)o(y)m
X(,)f(qualit)o(y)f(of)h(co)q(de)h(pro)q(duced)g(b)o(y)1017 2034
Xy(the)g(compiler,)f(and)h(user)h(reaction,)g(the)g(language)e(has)1017
X2084 y(b)q(een)d(a)e(success.)1066 2134 y(Of)k(more)f(in)o(terest,)i(p)q
X(erhaps,)h(are)e(the)g(things)g(whic)o(h)1017 2183 y(w)o(e)g(ha)o(v)o(e)f
X(learned)i(whic)o(h)e(will)g(cause)i(us)f(to)f(extend)i(the)1017
X2233 y(language)f(or)h(do)g(things)h(di\013eren)o(tly)f(if)g(w)o(e)h(w)o(ere
V)
Xg(to)f(do)1017 2283 y(them)12 b(o)o(v)o(er)h(again.)j(W)m(e)d(men)o(tion)e
X(three,)j(one)f(of)f(whic)o(h)h(is)1017 2333 y(curren)o(tly)h(b)q(eing)g
X(implemen)o(ted.)1066 2383 y(1.)27 b(The)18 b(implemen)o(tatio)o(n)c
X(presumes)k(a)f(stac)o(k)g(whic)o(h)1017 2433 y(is)k(used)h(for)f(parameters
V)
Xg(to)h(functions,)h(return)f(links,)1017 2482 y(and)16 b(lo)q(cal)f(v)n
X(ariables.)26 b(The)17 b(user)g(do)q(es)g(not)g(ha)o(v)o(e)f(direct)1017
X2532 y(con)o(trol)i(o)o(v)o(er)i(the)f(implicit)e(structure.)36
Xb(Since)19 b(the)h(im-)1017 2582 y(plemen)o(tation)13 b(is)i(quite)g
X(e\016cien)o(t,)h(there)g(is)f(little)f(reason)1017 2632 y(for)23
Xb(the)i(user)g(to)e(o)o(v)o(erride)i(it)e(so)h(long)f(as)h(his)g(en)o(tire)
X954 2770 y(11)p eop
X%%Page: 12 12
Xbop 0 42 a Ft(system)16 b(is)g(written)h(in)f Fs(bliss)p Ft(.)26
Xb(Ho)o(w)o(ev)o(er,)17 b(if)e(one)i(wishes)0 91 y(to)f(use)h
XFs(bliss)f Ft(to)g(rewrite)h(parts)g(of)f(an)g(existing)g(system)0
X141 y(\(for)21 b(example,)g(w)o(e)g(are)g(rewriting)g(parts)h(of)e(the)i
XFs(pdp-)0 191 y(10)g Ft(op)q(erating)g(system\),)i(one)f(\014nds)f(that)h
X(con\015icts)g(in)0 241 y(parameter)9 b(passing)h(con)o(v)o(en)o(tions,)g
X(register)h(con)o(v)o(en)o(tions,)0 291 y(etc.,)j(arise.)50
X340 y(A)22 b(partial)f(solution)h(to)g(these)h(problems)e(is)h(imple-)0
X390 y(men)o(ted)g(in)g(the)i(curren)o(t)g(compiler)d(in)h(that)h(the)g(user)
V0
X440 y(ma)o(y)17 b(con)o(trol)h(the)h(compiler's)e(register)i(allo)q(cation)e
X(p)q(ol-)0 490 y(icy)m(.)g(Another)d(partial)e(solution)g(\(not)g(y)o(et)i
X(implem)o(en)o(ted\))0 540 y(w)o(ould)19 b(p)q(ermit)f(a)i
XFr(structur)n(e)i Ft(to)d(b)q(e)h(asso)q(ciated)g(with)g(a)0
X589 y(function)i(to)g(sp)q(ecify)h(ho)o(w)f(parameters)g(are)h(accessed.)0
X639 y(The)12 b(most)f(di\016cult)h(asp)q(ect)h(of)f(the)g(problem)f(is)h(to)
Vg
X(devise)0 689 y(a)i(means)g(b)o(y)g(whic)o(h)h(the)g(user)h(ma)o(y)d(sp)q
X(ecify)i(the)g(sc)o(hema)0 739 y(for)f(generation)g(of)f(prologue)g(and)h
X(epilogue)f(co)q(de.)50 789 y(2.)34 b(The)20 b(\\escap)q(e")g(mec)o(hanism)d
X(is)i(essen)o(tial)h(in)f(the)0 839 y(con)o(text)11 b(of)g(a)f(\\)p
XFg(go)i(to)p Ft(-less")e(language.)17 b(It)10 b(is)h(unfortunate)0
X888 y(that)18 b(w)o(e)g(ha)o(v)o(e)f(eigh)o(t)g(separate)i(op)q(erations)f
X(\()p Fg(exitlo)q(op)p Ft(,)0 938 y Fg(exitblo)q(c)o(k)p Ft(,)i(etc.\),)k
X(all)c(of)g(whic)o(h)h(p)q(erform)g(essen)o(tially)0 988 y(the)f(same)e
X(function.)33 b(Our)20 b(mistak)o(e)d(w)o(as)i(in)g(assuming)0
X1038 y(that)h(there)i(is)e(no)g(need)h(for)f(a)g(lab)q(el)f(once)i(the)g
XFg(go)i(to)0 1088 y Ft(is)c(remo)o(v)o(ed.)34 b(It)20 b(w)o(ould)e(ha)o(v)o
X(e)h(b)q(een)i(b)q(etter)g(to)e(p)q(ermit)0 1137 y(a)h(con)o(trol)h(en)o
X(vironmen)o(t)e(\(a)h(blo)q(c)o(k,)i(a)e(lo)q(op,)h(or)g(what-)0
X1187 y(ev)o(er\))d(to)g(b)q(e)g(lab)q(eled,)f(and)h(to)f(use)h(a)f(single)g
X(op)q(eration,)0 1237 y(sa)o(y)j(\\)p Fg(lea)o(v)o(e)f Fm(h)p
XFt(lab)q(el)p Fm(i)g Fh(\017)p Ft(",)i(to)f(co)o(v)o(er)h(all)e(of)g(these)j
X(cases.)0 1287 y(A)14 b(simple)f(extension)h(to)g(this)g(notion,)f(\\)p
XFg(lea)o(v)o(e)g Fm(h)p Ft(function)0 1337 y(name)p Fm(i)g
XFh(\017)p Ft(",)g(could)h(cause)h(an)e(exit)h(from)e(sev)o(eral)j(\(nested\)
V)
X0 1386 y(calls.)50 1436 y(3.)26 b(An)17 b(assumption)f(made)f(b)o(y)i(adv)o
X(o)q(cates)g(of)f(imple-)0 1486 y(men)o(tation)d(languages,)h(including)f
X(the)i(authors,)g(is)f(that)0 1536 y(systems)19 b(written)h(in)e(a)h
X(higher-lev)o(el)f(language)g(will)g(b)q(e)0 1586 y(ultimately)j(more)h
X(e\016cien)o(t)i(than)f(those)g(pro)q(duced)i(in)0 1636 y(assem)o(bly)16
Xb(language.)29 b(The)18 b(reasoning)f(b)q(ehind)h(this)g(as-)0
X1685 y(sumption)12 b(is)i(simply)d(that)j(the)g(cost)h(of)e(redesigning)h
X(and)0 1735 y(reco)q(ding)19 b(\\critical")f(p)q(ortions)g(of)g(a)g(system)h
X(is)f(smaller)0 1785 y(when)h(it)f(is)g(written)h(in)f(a)g(higher-lev)o(el)g
X(language)f(than)0 1835 y(when)d(it)g(is)g(written)g(in)f(assem)o(bly)g(co)q
X(de,)h(and)g(hence)h(it)f(is)0 1885 y(more)e(practical)i(to)f(p)q(olish)g
X(the)h(\014nal)f(pro)q(duct.)18 b(The)c(cor-)0 1934 y(rectness)19
Xb(of)c(this)h(assumption)f(dep)q(ends)i(up)q(on)g(kno)o(wing)0
X1984 y(whic)o(h)12 b(p)q(ortions)g(of)f(the)i(system)e(are)i(the)f
X(\\critical")f(ones.)0 2034 y(Exp)q(erience)18 b(indicates)f(that)g(our)f(in
V)
Xo(tuition)f(ab)q(out)i(suc)o(h)0 2084 y(things)d(is)g(p)q(o)q(or.)50
X2134 y(It)25 b(migh)o(t)e(b)q(e)j(argued)f(that)g(programmers)f(should)0
X2183 y(build)16 b(mec)o(hanisms)f(in)o(to)h(their)h(system)f(to)h(measure)f
X(its)0 2233 y(e\016ciency`7Cindeed)d(the)g(same)f(argumen)o(t)f(ma)o(y)g(b)q
V(e)
Xi(made)0 2283 y(for)k(built-in)f(debugging)h(to)q(ols.)29 b(In)18
Xb(practice,)h(ho)o(w)o(ev)o(er,)0 2333 y(giv)o(en)d(the)g(decision)g(of)g(ho
V)
Xo(w)g(to)f(exp)q(end)j(to)q(da)o(y's)d(e\013ort,)0 2383 y(a)d(programmer)f
X(will)g(usually)g(opt)i(for)f(pushing)g(the)i(main)0 2433 y(line)9
Xb(of)g(the)h(pro)r(ject)h(rather)f(than)g(building)e(these)j(supp)q(ort)0
X2482 y(to)q(ols.)35 b(On)21 b(the)f(other)g(hand,)h(he)f(will)f(use)h(suc)o
X(h)h(to)q(ols)0 2532 y(if)g(they)g(already)g(exist.)41 b(One)22
Xb(suc)o(h)g(to)q(ol)f(installed)g(in)1017 42 y(the)16 b Fs(bliss)g
XFt(compiler)e(will,)h(under)h(con)o(trol)g(of)f(a)h(compile)1017
X91 y(time)22 b(toggle,)j(cause)g(a)f(user-de\014ned)i(function)e(to)f(b)q(e)
X1017 141 y(called)j(on)h(eac)o(h)g(en)o(try)g(\(and)g(exit\))g(from)e(a)h
X(con)o(trol)1017 191 y(en)o(vironmen)o(t)h(\(blo)q(c)o(k,)k(conditional,)f
X(lo)q(op,)h(function,)1017 241 y(etc.\).)61 b(P)o(arameters)28
Xb(to)g(this)h(function)f(sp)q(ecify)g(the)1017 291 y(\(source\))18
Xb(line)e(n)o(um)o(b)q(er,)f(t)o(yp)q(e)i(of)f(con)o(trol)h(en)o(vironmen)o
X(t,)1017 340 y(etc.)h(The)11 b(user)h(ma)o(y)m(,)d(of)h(course,)j(do)e
X(whatev)o(er)g(he)h(pleases)1017 390 y(in)17 b(this)g(function;)i(ho)o(w)o
X(ev)o(er,)f(standard)g(functions)g(ha)o(v)o(e)1017 440 y(b)q(een)11
Xb(written)h(whic)o(h)e(coun)o(t)i(the)f(frequency)h(of)e(execution)1017
X490 y(of)k(the)h(v)n(arious)f(expressions)i(and)e(accum)o(ulate)g(the)h(time
V)
X1017 540 y(sp)q(en)o(t)h(in)g(these)h(expressions.)26 b(V)m(ery)16
Xb(simple)e(analysis)i(of)1017 589 y(the)h(data)f(collected)i(b)o(y)e(these)i
X(routines)g(can)f(so)g(helpful)1017 639 y(in)c(determining)g(when)h(further)
Vh
X(e\013ort)f(will)f(b)q(e)h(fruitful.)1066 793 y Fr(A)n(cknow)r(le)n(dgments.
V)
X23 b Ft(W)m(e)15 b(w)o(ould)g(lik)o(e)f(to)i(express)h(our)1017
X843 y(deep)h(gratitude)g(to)f(Messrs.)i(Gesc)o(hk)o(e,)g(Wile,)f(and)f(Ap-)
X1017 893 y(p)q(erson)f(\(graduate)f(studen)o(ts)h(at)f(Carnegie-Mellon)f
X(Uni-)1017 943 y(v)o(ersit)o(y\),)f(eac)o(h)h(of)f(whom)e(has)j(made)e(v)n
X(aluable)g(con)o(tribu-)1017 992 y(tions)i(to)g(b)q(oth)g(the)h(design)f(and
V)
Xg(implemen)o(tation)d(of)i(the)1017 1042 y(language.)1017 1142
Xy Fu(References)1026 1246 y Ft(1.)20 b Fs(epl)14 b Ft(reference)j(man)o(ual,
V)
X11 b(Pro)r(ject)k Fs(ma)o(c)p Ft(,)e(April)g(1966.)1026 1300
Xy(2.)20 b(Burroughs)30 b(B5500)e(Extended)i Fs(algol)g Ft(reference)1079
X1350 y(man)o(ual.)15 b(Burroughs)g(Corp.,)e(Detroit,)h(Mic)o(h.)1026
X1405 y(3.)20 b(Wirth,)h(N.)f(\\PL/360,)h(A)f(programming)d(language)1079
X1454 y(for)j(the)h(360)f(computers.")37 b Fr(J.)20 b(A)o(CM)h(15)p
XFt(,)h(1)e(\(Jan.)1079 1504 y(1968\),)12 b(37`7B74.)1026 1559
Xy(4.)20 b(Ric)o(hards,)12 b(M.)f(\\)p Fs(bcpl)p Ft(:)17 b(A)c(to)q(ol)e(for)
Vh
X(compiler)f(writing)1079 1608 y(and)19 b(system)f(programming.)o(")31
Xb(Pro)q(c.)j Fs(afips)19 b Ft(1969)1079 1658 y Fs(sjcc)p Ft(,)28
Xb(V)m(ol.)d(34,)30 b Fs(afips)d Ft(Press,)k(Mon)o(tv)n(ale,)e(N.J.,)1079
X1708 y(pp.)13 b(557`7B566.)1026 1762 y(5.)20 b(Naur,)26 b(P)m(.,)f(and)e
X(Randell,)i(B.)f(\(Eds.\))48 b(\\Soft)o(w)o(are)1079 1812 y(engineering.")62
Xb(Scien)o(ti\014c)29 b(A\013airs)g(Div.,)h Fs(na)m(to)p Ft(,)1079
X1862 y(Brussels,)14 b(Belgium)d(\(Conference)k(held)d(in)h(Jan.)f(1969)1079
X1912 y(in)h(Garmish\).)1026 1966 y(6.)20 b Fs(bliss)30 b Ft(reference)i(man)
Vo
X(ual.)64 b(Computer)30 b(Science)1079 2016 y(Dept.)20 b(Rep.,)g
X(Carnegie-Mellon)f(Univ)o(ersit)o(y)m(,)i(Pitts-)1079 2066
Xy(burgh,)13 b(P)o(a.,)g(Jan.)h(15,)e(197O.)1026 2120 y(7.)20
Xb Fs(pdp-10)14 b Ft(reference)j(handb)q(o)q(ok.)j(Digital)12
Xb(Equipmen)o(t)1079 2170 y(Corp)q(oration,)h(Ma)o(ynard,)g(MA,)g(197O.)1026
X2224 y(8.)20 b(Lang,)34 b(Charles)e(A.)e(\\SAL`7CSystems)h(Assem)o(bly)1079
X2274 y(Language.")44 b(Pro)q(c.)23 b Fs(afips)g Ft(1969)f Fs(sjcc)p
XFt(,)i(V)m(ol.)d(34,)1079 2324 y Fs(afips)14 b Ft(Press,)h(Mon)o(tv)n(ale,)e
X(N.J.,)g(pp.)g(543`7B555.)1026 2378 y(9.)20 b(Bell,)10 b(J.)g(\\The)h
X(quadratic)f(quotien)o(t)g(metho)q(d:)15 b(A)c(hash)1079 2428
Xy(co)q(de)16 b(eliminating)c(secondary)k(clustering.")22 b
XFr(Comm.)1079 2478 y(A)o(CM)14 b(13)p Ft(,)g(2)g(\(F)m(eb.)f(1970\),)g(pp.)g
X(107`7B109.)p 1923 2532 27 27 v 954 2770 a(12)p eop
X%%Trailer
Xend
Xuserdict /end-hook known`7Bend-hook`7Dif
X%%EOF
$ CALL UNPACK BLISS.PS;17 420710498
$ v=f$verify(v)
$ EXIT
