summaryrefslogtreecommitdiff
path: root/web/yacco2/diagrams/linker.mp
blob: 96f52d47ce4433aa633a0d1e7d4ac61df3aef4e3 (plain)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
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;