home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
cs.rhul.ac.uk
/
www.cs.rhul.ac.uk.zip
/
www.cs.rhul.ac.uk
/
pub
/
CS375
/
listfile
< prev
next >
Wrap
Text File
|
1999-03-15
|
6KB
|
138 lines
- Pascal-FC for Unix systems -
- Compiler Version P5.2
G L Davies & A Burns, University of Bradford
Compiler listing for file philsem2.pfc
1 0 program philsem2;
2 0
3 0 (* Dining Philosophers - semaphore version 2
4 0 File is /CS/ftp/pub/CS375/sems/philsem2.pfc *)
5 0
6 0 const
7 0 N = 5;
8 0 var
9 0 fork : array [1..N] of semaphore; (* binary *)
10 0 freechairs : semaphore; (* general *)
11 0 i : integer;
12 0
13 0 process type philosophers(name : integer);
14 0 begin
15 0 repeat
16 0 sleep(random(3)); (* THINKING *)
17 3 wait(freechairs);
18 5 wait(fork[name]);
19 9 wait(fork[(name mod N) + 1]);
20 17 sleep(random(3)); (* EATING *)
21 20 writeln(name);
22 23 signal(fork[name]);
23 27 signal(fork[(name mod N) + 1]);
24 35 signal(freechairs)
25 37 forever
26 38 end; (* philosophers *)
27 39
28 39 var
29 39 phils: array[1..N] of philosophers;
30 39
31 39 begin
32 39 for i := 1 to N do
33 43 initial(fork[I],1);
34 50 initial(freechairs,N - 1);
35 56 cobegin
36 57 for i := 1 to N do
37 61 phils[i](i);
38 69 coend
39 69 end.
Symbol table
name link object type ref nrm lev adr aux
45 _main 44 procedure notyp 2 true 0 39 0
46 any 0 variable synch 0 true 1 5 0
47 n 46 constant integer 0 false 1 5 0
48 fork 47 variable array 1 true 1 5 0
49 freechairs 48 variable semaphore 0 true 1 10 0
50 i 49 variable integer 0 true 1 11 0
51 philosophe 50 type id process 3 true 1 0 0
52 name 0 variable integer 0 true 2 5 0
53 phils 51 variable array 2 true 1 12 0
Generated P-code
0 ldcon.i 0 3 ;16
1 stfun.i 0 19 ;16
2 sleep 0 0 ;16
3 ldadr 1 10 ;17
4 swait 0 0 ;17
5 ldadr 1 5 ;18
6 ldval.i 2 5 ;18
7 ixary.i 0 1 ;18
8 swait 0 0 ;18
9 ldadr 1 5 ;19
10 ldval.i 2 5 ;19
11 ldcon.i 0 5 ;19
12 modop.i 0 0 ;19
13 ldcon.i 0 1 ;19
14 addop.i 0 0 ;19
15 ixary.i 0 1 ;19
16 swait 0 0 ;19
17 ldcon.i 0 3 ;20
18 stfun.i 0 19 ;20
19 sleep 0 0 ;20
20 ldval.i 2 5 ;21
21 wrval.i 0 0 ;21
22 wrlin 0 0 ;21
23 ldadr 1 5 ;22
24 ldval.i 2 5 ;22
25 ixary.i 0 1 ;22
26 signl 0 0 ;22
27 ldadr 1 5 ;23
28 ldval.i 2 5 ;23
29 ldcon.i 0 5 ;23
30 modop.i 0 0 ;23
31 ldcon.i 0 1 ;23
32 addop.i 0 0 ;23
33 ixary.i 0 1 ;23
34 signl 0 0 ;23
35 ldadr 1 10 ;24
36 signl 0 0 ;24
37 jmpuc 0 0 ;24
38 rproc 1 0 ;25
39 ldadr 1 11 ;31
40 ldcon.i 0 1 ;32
41 ldcon.i 0 5 ;32
42 for1u.i 0 50 ;32
43 ldadr 1 5 ;33
44 ldval.i 1 11 ;33
45 ixary.i 0 1 ;33
46 ldcon.i 0 1 ;33
47 lobnd.i 0 0 ;33
48 sinit 0 0 ;33
49 for2u.i 0 43 ;33
50 ldadr 1 10 ;34
51 ldcon.i 0 5 ;34
52 ldcon.i 0 1 ;34
53 subop.i 0 0 ;34
54 lobnd.i 0 0 ;34
55 sinit 0 0 ;34
56 cobeg 0 0 ;34
57 ldadr 1 11 ;35
58 ldcon.i 0 1 ;36
59 ldcon.i 0 5 ;36
60 for1u.i 0 69 ;36
61 mkstk 1 51 ;36
62 ldadr 1 12 ;36
63 ldval.i 1 11 ;37
64 ixary.i 0 2 ;37
65 procv 0 0 ;37
66 ldval.i 1 11 ;37
67 calls 1 5 ;37
68 for2u.i 0 61 ;37
69 coend 0 0 ;37
70 stopx 0 0 ;38