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 >
Text File  |  1999-03-15  |  6KB  |  138 lines

  1. - Pascal-FC for Unix systems - 
  2. - Compiler Version P5.2
  3.  
  4. G L Davies  &  A Burns, University of Bradford
  5.  
  6. Compiler listing for file philsem2.pfc                  
  7.  
  8.  
  9.     1     0 program philsem2;
  10.     2     0 
  11.     3     0 (* Dining Philosophers - semaphore version 2 
  12.     4     0 File is /CS/ftp/pub/CS375/sems/philsem2.pfc *)
  13.     5     0 
  14.     6     0 const
  15.     7     0    N = 5;
  16.     8     0 var 
  17.     9     0    fork : array [1..N] of semaphore;  (* binary *)
  18.    10     0    freechairs : semaphore;  (* general *)
  19.    11     0    i : integer;
  20.    12     0 
  21.    13     0 process type philosophers(name : integer);
  22.    14     0 begin
  23.    15     0    repeat
  24.    16     0       sleep(random(3));   (* THINKING *)
  25.    17     3       wait(freechairs);
  26.    18     5       wait(fork[name]);
  27.    19     9       wait(fork[(name mod N) + 1]);
  28.    20    17       sleep(random(3));   (* EATING *)
  29.    21    20       writeln(name);
  30.    22    23       signal(fork[name]);
  31.    23    27       signal(fork[(name mod N) + 1]);
  32.    24    35       signal(freechairs)
  33.    25    37    forever
  34.    26    38 end;  (* philosophers *)
  35.    27    39 
  36.    28    39 var
  37.    29    39    phils: array[1..N] of philosophers;
  38.    30    39 
  39.    31    39 begin
  40.    32    39    for i := 1 to N do
  41.    33    43       initial(fork[I],1);
  42.    34    50    initial(freechairs,N - 1);
  43.    35    56    cobegin
  44.    36    57       for i := 1 to N do
  45.    37    61          phils[i](i);
  46.    38    69    coend
  47.    39    69 end.
  48.  
  49.  
  50.  
  51. Symbol table
  52.  
  53.     name       link      object       type         ref      nrm  lev  adr  aux
  54.  
  55.  45 _main        44     procedure   notyp           2      true    0   39    0
  56.  46 any           0     variable    synch           0      true    1    5    0
  57.  47 n            46     constant    integer         0     false    1    5    0
  58.  48 fork         47     variable    array           1      true    1    5    0
  59.  49 freechairs   48     variable    semaphore       0      true    1   10    0
  60.  50 i            49     variable    integer         0      true    1   11    0
  61.  51 philosophe   50     type id     process         3      true    1    0    0
  62.  52 name          0     variable    integer         0      true    2    5    0
  63.  53 phils        51     variable    array           2      true    1   12    0
  64.  
  65. Generated P-code
  66.  
  67.     0     ldcon.i      0         3          ;16
  68.     1     stfun.i      0        19          ;16
  69.     2     sleep        0         0          ;16
  70.     3     ldadr        1        10          ;17
  71.     4     swait        0         0          ;17
  72.     5     ldadr        1         5          ;18
  73.     6     ldval.i      2         5          ;18
  74.     7     ixary.i      0         1          ;18
  75.     8     swait        0         0          ;18
  76.     9     ldadr        1         5          ;19
  77.    10     ldval.i      2         5          ;19
  78.    11     ldcon.i      0         5          ;19
  79.    12     modop.i      0         0          ;19
  80.    13     ldcon.i      0         1          ;19
  81.    14     addop.i      0         0          ;19
  82.    15     ixary.i      0         1          ;19
  83.    16     swait        0         0          ;19
  84.    17     ldcon.i      0         3          ;20
  85.    18     stfun.i      0        19          ;20
  86.    19     sleep        0         0          ;20
  87.    20     ldval.i      2         5          ;21
  88.    21     wrval.i      0         0          ;21
  89.    22     wrlin        0         0          ;21
  90.    23     ldadr        1         5          ;22
  91.    24     ldval.i      2         5          ;22
  92.    25     ixary.i      0         1          ;22
  93.    26     signl        0         0          ;22
  94.    27     ldadr        1         5          ;23
  95.    28     ldval.i      2         5          ;23
  96.    29     ldcon.i      0         5          ;23
  97.    30     modop.i      0         0          ;23
  98.    31     ldcon.i      0         1          ;23
  99.    32     addop.i      0         0          ;23
  100.    33     ixary.i      0         1          ;23
  101.    34     signl        0         0          ;23
  102.    35     ldadr        1        10          ;24
  103.    36     signl        0         0          ;24
  104.    37     jmpuc        0         0          ;24
  105.    38     rproc        1         0          ;25
  106.    39     ldadr        1        11          ;31
  107.    40     ldcon.i      0         1          ;32
  108.    41     ldcon.i      0         5          ;32
  109.    42     for1u.i      0        50          ;32
  110.    43     ldadr        1         5          ;33
  111.    44     ldval.i      1        11          ;33
  112.    45     ixary.i      0         1          ;33
  113.    46     ldcon.i      0         1          ;33
  114.    47     lobnd.i      0         0          ;33
  115.    48     sinit        0         0          ;33
  116.    49     for2u.i      0        43          ;33
  117.    50     ldadr        1        10          ;34
  118.    51     ldcon.i      0         5          ;34
  119.    52     ldcon.i      0         1          ;34
  120.    53     subop.i      0         0          ;34
  121.    54     lobnd.i      0         0          ;34
  122.    55     sinit        0         0          ;34
  123.    56     cobeg        0         0          ;34
  124.    57     ldadr        1        11          ;35
  125.    58     ldcon.i      0         1          ;36
  126.    59     ldcon.i      0         5          ;36
  127.    60     for1u.i      0        69          ;36
  128.    61     mkstk        1        51          ;36
  129.    62     ldadr        1        12          ;36
  130.    63     ldval.i      1        11          ;37
  131.    64     ixary.i      0         2          ;37
  132.    65     procv        0         0          ;37
  133.    66     ldval.i      1        11          ;37
  134.    67     calls        1         5          ;37
  135.    68     for2u.i      0        61          ;37
  136.    69     coend        0         0          ;37
  137.    70     stopx        0         0          ;38
  138.