dispatch tables generated now, layout improvements
authorceriel <none@none>
Tue, 31 Mar 1987 07:54:43 +0000 (07:54 +0000)
committerceriel <none@none>
Tue, 31 Mar 1987 07:54:43 +0000 (07:54 +0000)
doc/em/app.codes.nr
doc/em/app.exam.nr
doc/em/dspace.nr
doc/em/em.i
doc/em/intro.nr

index d7f43f4..8aa2bb6 100644 (file)
@@ -130,7 +130,7 @@ negative 16-bit argument
 negative 16-bit argument divided by the wordsize
 .PT .s<num>
 shortie with <num> as high order argument byte
-.PT .sw<num>
+.PT .w<num>
 shortie with argument divided by the wordsize
 .PT .<num>
 mini with <num> as argument
@@ -141,68 +141,13 @@ mini with <num>*wordsize as argument
 .VS 1 1
 .IE
 The dispatch table for the 256 primary opcodes:
-.DS B
-.ta 7n 16n 25n 34n 43n 52n 61n 70n
-   0   loc.0   loc.1   loc.2   loc.3   loc.4   loc.5   loc.6   loc.7
-   8   loc.8   loc.9   loc.10  loc.11  loc.12  loc.13  loc.14  loc.15
-  16   loc.16  loc.17  loc.18  loc.19  loc.20  loc.21  loc.22  loc.23
-  24   loc.24  loc.25  loc.26  loc.27  loc.28  loc.29  loc.30  loc.31
-  32   loc.32  loc.33  aar.1W  adf.s0  adi.1W  adi.2W  adp.l   adp.1
-  40   adp.2   adp.s0  adp.s\-1        ads.1W  and.1W  asp.1W  asp.2W  asp.3W
-  48   asp.4W  asp.5W  asp.w0  beq.l   beq.s0  bge.s0  bgt.s0  ble.s0
-  56   blm.s0  blt.s0  bne.s0  bra.l   bra.s\-1        bra.s\-2        bra.s0  bra.s1
-  64   cal.1   cal.2   cal.3   cal.4   cal.5   cal.6   cal.7   cal.8
-  72   cal.9   cal.10  cal.11  cal.12  cal.13  cal.14  cal.15  cal.16
-  80   cal.17  cal.18  cal.19  cal.20  cal.21  cal.22  cal.23  cal.24
-  88   cal.25  cal.26  cal.27  cal.28  cal.s0  cff.z   cif.z   cii.z
-  96   cmf.s0  cmi.1W  cmi.2W  cmp.z   cms.s0  csa.1W  csb.1W  dec.z
- 104   dee.w0  del.w\-1        dup.1W  dvf.s0  dvi.1W  fil.l   inc.z   ine.lw
- 112   ine.w0  inl.\-1W        inl.\-2W        inl.\-3W        inl.w\-1        inn.s0  ior.1W  ior.s0
- 120   lae.l   lae.w0  lae.w1  lae.w2  lae.w3  lae.w4  lae.w5  lae.w6
- 128   lal.p   lal.n   lal.0   lal.\-1 lal.w0  lal.w\-1        lal.w\-2        lar.W
- 136   ldc.0   lde.lw  lde.w0  ldl.0   ldl.w\-1        lfr.1W  lfr.2W  lfr.s0
- 144   lil.w\-1        lil.w0  lil.0   lil.1W  lin.l   lin.s0  lni.z   loc.l
- 152   loc.\-1 loc.s0  loc.s\-1        loe.lw  loe.w0  loe.w1  loe.w2  loe.w3
- 160   loe.w4  lof.l   lof.1W  lof.2W  lof.3W  lof.4W  lof.s0  loi.l
- 168   loi.1   loi.1W  loi.2W  loi.3W  loi.4W  loi.s0  lol.pw  lol.nw
- 176   lol.0   lol.1W  lol.2W  lol.3W  lol.\-1W        lol.\-2W        lol.\-3W        lol.\-4W
- 184   lol.\-5W        lol.\-6W        lol.\-7W        lol.\-8W        lol.w0  lol.w\-1        lxa.1   lxl.1
- 192   lxl.2   mlf.s0  mli.1W  mli.2W  rck.1W  ret.0   ret.1W  ret.s0
- 200   rmi.1W  sar.1W  sbf.s0  sbi.1W  sbi.2W  sdl.w\-1        set.s0  sil.w\-1
- 208   sil.w0  sli.1W  ste.lw  ste.w0  ste.w1  ste.w2  stf.l   stf.W
- 216   stf.2W  stf.s0  sti.1   sti.1W  sti.2W  sti.3W  sti.4W  sti.s0
- 224   stl.pw  stl.nw  stl.0   stl.1W  stl.\-1W        stl.\-2W        stl.\-3W        stl.\-4W
- 232   stl.\-5W        stl.w\-1        teq.z   tgt.z   tlt.z   tne.z   zeq.l   zeq.s0
- 240   zeq.s1  zer.s0  zge.s0  zgt.s0  zle.s0  zlt.s0  zne.s0  zne.s\-1
- 248   zre.lw  zre.w0  zrl.\-1W        zrl.\-2W        zrl.w\-1        zrl.nw  escape1 escape2
-.DE 2
+.N 1
+.so dispat1
+.N 2
 The list of secondary opcodes (escape1):
-.N     1
-.DS    B
-.ta 7n 16n 25n 34n 43n 52n 61n 70n
-   0   aar.l   aar.z   adf.l   adf.z   adi.l   adi.z   ads.l   ads.z
-   8   adu.l   adu.z   and.l   and.z   asp.lw  ass.l   ass.z   bge.l
-  16   bgt.l   ble.l   blm.l   bls.l   bls.z   blt.l   bne.l   cai.z
-  24   cal.l   cfi.z   cfu.z   ciu.z   cmf.l   cmf.z   cmi.l   cmi.z
-  32   cms.l   cms.z   cmu.l   cmu.z   com.l   com.z   csa.l   csa.z
-  40   csb.l   csb.z   cuf.z   cui.z   cuu.z   dee.lw  del.pw  del.nw
-  48   dup.l   dus.l   dus.z   dvf.l   dvf.z   dvi.l   dvi.z   dvu.l
-  56   dvu.z   fef.l   fef.z   fif.l   fif.z   inl.pw  inl.nw  inn.l
-  64   inn.z   ior.l   ior.z   lar.l   lar.z   ldc.l   ldf.l   ldl.pw
-  72   ldl.nw  lfr.l   lil.pw  lil.nw  lim.z   los.l   los.z   lor.s0
-  80   lpi.l   lxa.l   lxl.l   mlf.l   mlf.z   mli.l   mli.z   mlu.l
-  88   mlu.z   mon.z   ngf.l   ngf.z   ngi.l   ngi.z   nop.z   rck.l
-  96   rck.z   ret.l   rmi.l   rmi.z   rmu.l   rmu.z   rol.l   rol.z
- 104   ror.l   ror.z   rtt.z   sar.l   sar.z   sbf.l   sbf.z   sbi.l
- 112   sbi.z   sbs.l   sbs.z   sbu.l   sbu.z   sde.l   sdf.l   sdl.pw
- 120   sdl.nw  set.l   set.z   sig.z   sil.pw  sil.nw  sim.z   sli.l
- 128   sli.z   slu.l   slu.z   sri.l   sri.z   sru.l   sru.z   sti.l
- 136   sts.l   sts.z   str.s0  tge.z   tle.z   trp.z   xor.l   xor.z
- 144   zer.l   zer.z   zge.l   zgt.l   zle.l   zlt.l   zne.l   zrf.l
- 152   zrf.z   zrl.pw  dch.z   exg.s0  exg.l   exg.z   lpb.z   gto.l
-.DE 2
+.N 1
+.so dispat2
+.N 2
 Finally, the list of opcodes with four byte arguments (escape2).
-.DS
-.ta 7n 16n 25n 34n 43n 52n 61n 70n
-   0   loc
-.DE 0
+.N 1
+.so dispat3
index 109d25b..2121e08 100644 (file)
@@ -1,7 +1,9 @@
 .BP
 .AP "AN EXAMPLE PROGRAM"
-.DS B
+.A 1 0
+.NA
 .ta 4n 8n 12n 16n 20n
+.nf
  1     program example(output);
  2     {This program just demonstrates typical EM code.}
  3     type rec = record r1: integer; r2:real; r3: boolean end;
 38             mi := 99;
 39             test(r)
 40     end.
-.DE 0
+.fi
+.AD
 .BP
 The EM code as produced by the Pascal-VU compiler is given below. Comments
 have been added manually.  Note that this code has already been  optimized.
-.DS B
+.A 1 0
+.NA
+.nf
 .ta 1n 24n
        mes 2,2,2       ; wordsize 2, pointersize 2
-.1
+\&.1
        rom 't.p\e000'  ; the name of the source file
        hol 552,\-32768,0       ; externals and buf occupy 552 bytes
        exp $sum        ; sum can be called from other modules
@@ -59,13 +64,13 @@ have been added manually.  Note that this code has already been  optimized.
        adi 2   ; add them
        ret 2   ; return the result
        end 2   ; end of procedure ( still two bytes local storage )
-.2
+\&.2
        rom 1,99,2      ; descriptor of array a[]
        exp $test       ; the compiler exports all level 0 procedures
        pro $test,226   ; procedure test, 226 bytes local storage
-.3
+\&.3
        rom 4.8F8       ; assemble Floating point 4.8 (8 bytes) in
-.4             ; global storage
+\&.4           ; global storage
        rom 0.5F8       ; same for 0.5
        mes 3,\-226,2,2 ; compiler temporary not referenced by address
        mes 3,\-24,2,0  ; the same is true for i, j, b and c in test
@@ -106,7 +111,7 @@ have been added manually.  Note that this code has already been  optimized.
        lni     ; lin 26 prior to optimization
        loc 1
        stl \-2 ; for i:= 1
- 2
+2
        lol \-2
        dup 2
        mli 2   ; i*i
@@ -119,7 +124,7 @@ have been added manually.  Note that this code has already been  optimized.
        beq *3  ; to 100 do
        inl \-2 ; increment i and loop
        bra *2
- 3
+3
        lin 27
        lol \-4
        loc 27
@@ -146,7 +151,7 @@ have been added manually.  Note that this code has already been  optimized.
        asp 4   ; remove parameters from stack
        lfr 2   ; get function result
        stl \-2 ; i :=
- 4
+4
        lin 31
        lol \-2
        zle *5  ; while i > 0 do
@@ -156,7 +161,7 @@ have been added manually.  Note that this code has already been  optimized.
        stl \-4 ; j := j + r.r1
        del \-2 ; i := i - 1
        bra *4  ; loop
- 5
+5
        lin 32
        lol 0
        stl \-226       ; make copy of address of r
@@ -199,9 +204,9 @@ have been added manually.  Note that this code has already been  optimized.
        end 226
        exp $_main
        pro $_main,0    ; main program
-.6
+\&.6
        con 2,\-1,22    ; description of external files
-.5
+\&.5
        rom 15.96F8
        fil .1  ; maintain source file name
        lae .6  ; description of external files
@@ -225,7 +230,9 @@ have been added manually.  Note that this code has already been  optimized.
        asp 2
        end 0
        mes 5   ; reals were used
-.DE 0
+.fi
+.AD
+.A 1 0
 The compact code corresponding to the above program is listed below.
 Read it horizontally, line by line, not column by column.
 Each number represents a byte of compact code, printed in decimal.
index 602eea5..4fa5447 100644 (file)
@@ -343,7 +343,7 @@ procedure frames need not be contiguous.
                 |         parameter  0          | <\- SP
                 |===============================|
 .Df
-          Figure 1. A sample procedure frame and parameters.
+Figure 1. A sample procedure frame and parameters.
 .De
 .S2 "Heap data area"
 The heap area starts empty, with HP
index 23d821c..04ab372 100644 (file)
@@ -1,3 +1,4 @@
+
 { This  is an interpreter for EM.  It serves as  the official machine
   definition.  This interpreter must run on a machine which supports
   arithmetic with words and memory offsets.
@@ -30,7 +31,7 @@
        to object size in bits - 1.  The effect of a  count  not in this
        range is undefined.
 }
-.BP
+.bp
 {$i256} {$d+}
 program em(tables,prog,input,output);
 
index 4b37b7f..e9c4d7a 100644 (file)
@@ -81,7 +81,6 @@ toward structured programs consisting of many small
 procedures greatly reduces the value of registers to hold local variables
 because the large number of procedure calls implies a large overhead in
 saving and restoring the registers at every call.
-.BP
 .P
 Although there are no general purpose registers, there are a
 few internal registers with specific functions as follows:
@@ -89,10 +88,10 @@ few internal registers with specific functions as follows:
 .N 1
 .TS
 tab(:);
-l 1 l l.
+l 1 l l l.
 PC:\-:Program Counter:Pointer to next instruction
-LB:\-:Local Base:Points to base of the local variables \
-in the current procedure.
+LB:\-:Local Base:Points to base of the local variables
+:::in the current procedure.
 SP:\-:Stack Pointer:Points to the highest occupied word on the stack.
 HP:\-:Heap Pointer:Points to the top of the heap area.
 .TE 1