summaryrefslogtreecommitdiff
path: root/web/yacco2/diagrams/linker.mp
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/yacco2/diagrams/linker.mp
Initial commit
Diffstat (limited to 'web/yacco2/diagrams/linker.mp')
-rw-r--r--web/yacco2/diagrams/linker.mp117
1 files changed, 117 insertions, 0 deletions
diff --git a/web/yacco2/diagrams/linker.mp b/web/yacco2/diagrams/linker.mp
new file mode 100644
index 0000000000..96f52d47ce
--- /dev/null
+++ b/web/yacco2/diagrams/linker.mp
@@ -0,0 +1,117 @@
+% file: linker.mp
+input boxes
+%tracingall;
+
+numeric u;
+u=1cc;
+beginfig(1);
+boxjoin(a.se=b.ne);
+numeric ff;
+ff := defaultdy;
+defaultdy:=.5u;
+boxit.int(btex Interactive: file name etex);
+boxit.cmd(btex Command line etex);
+boxjoin(a.se=b.ne);
+drawunboxed(int,cmd);
+
+pair c,d,e,f;
+c:=cmd.e+(.25u,0);
+d:=int.e+(.25u,0);
+e:=.5[c,d];
+f:=e+(1u,0);
+draw cmd.e--c--d--int.e;
+drawarrow e..f;
+defaultdy:= ff;
+
+show f;
+boxjoin();
+
+boxjoin(tmp.nw=holdr.sw;tmp.ne=holdr.se);
+boxit.holdr(btex Holding file etex);
+boxit.tmp(btex ``linkercmd.tmp'' etex);
+boxit.linkr(btex Linker etex);
+boxit.fsc(btex ``First set file''.cpp etex);
+holdr.w=f;
+holdr.e = linkr.w-(1u,0);
+linkr.e = fsc.w-(1u,0);
+
+drawunboxed(holdr);
+drawunboxed(tmp);
+drawboxed(linkr);
+drawunboxed(fsc);
+drawarrow holdr.e--linkr.w;
+drawarrow linkr.e--fsc.w;
+
+
+label.bot(btex Figure 1: Linker run environment etex,linkr.s-(0,1u));
+endfig;
+
+% bit maps
+beginfig(2);
+u:=.1in;
+picture c;
+for i=1 upto 1:
+ x1:= (i-1)*32u;
+ x2:= i*32u;
+ draw (x1,0)--(x2,0)..(x2+.5u,.5u)..(x2,1u)..(x2-.5u,1.5u)..(x2,2u)--(x1,2u)--cycle;
+ for j=1 upto 31:
+ draw (x1+j*u,0)--(x1+j*u,.2u);
+ endfor
+endfor
+% fill in the map contents
+for i=1 upto 32:
+ if (
+ (i = 1) or (i = 9) or
+ (i = 17) or (i = 25) or
+ (i = 32)
+ ):
+ label("1",(x1+i*u-.5u,1u));
+ else:
+ label("0",(x1+i*u-.5u,1u));
+ fi
+endfor
+label.llft("Thread ids:",(x1-.5u,0));
+
+boxjoin(a.sw=b.nw;a.se=b.ne);
+boxit.aa("31");boxit.ba("23");boxit.ca("15");boxit.da("7");boxit.ea("0");
+aa.ne = (x1-.5u,0) -(15bp,10bp);
+drawunboxed(aa,ba,ca,da,ea);
+label.top("word 0",(x1+15*u,2u));
+numeric dlt;
+pair mp,bp;
+bp := (x1+.5u,0);
+dlt:= abs ((x1 + .5u) - xpart aa.e);
+mp:=aa.e+(dlt,0);
+draw aa.e -- mp;
+drawarrow mp--(x1+.5u,0);
+
+bp := (x1+.5u+8u,0);
+dlt:= abs ((x1+.5u+8u) - xpart ba.e);
+mp:=ba.e+(dlt,0);
+draw ba.e -- mp;
+drawarrow mp--bp;
+
+bp := (x1+.5u+16u,0);
+dlt:= abs ((x1+.5u+16u) - xpart ca.e);
+mp:=ca.e+(dlt,0);
+draw ca.e -- mp;
+drawarrow mp--bp;
+
+bp := (x1+.5u+24u,0);
+dlt:= abs ((x1+.5u+24u) - xpart da.e);
+mp:=da.e+(dlt,0);
+draw da.e -- mp;
+drawarrow mp--bp;
+
+bp := (x1+.5u+31u,0);
+dlt:= abs ((x1+.5u+31u) - xpart ea.e);
+mp:=ea.e+(dlt,0);
+draw ea.e -- mp;
+drawarrow mp--bp;
+
+endfig;
+
+% Tables
+beginfig(3);
+endfig;
+end;