dick 38 anni fa
parent
commit
2d7b3443bc
2 ha cambiato i file con 32 aggiunte e 2 eliminazioni
  1. 3 1
      doc/em/READ_ME
  2. 29 1
      doc/em/assem.nr

+ 3 - 1
doc/em/READ_ME

@@ -1,5 +1,7 @@
 This it the text of IR-81,
 This it the text of IR-81,
-DESCRIPTION OF A MACHINE ARCHITECTURE FOR  USE WITH BLOCK  STRUCTURED  LANGUAGES
+DESCRIPTION OF A MACHINE ARCHITECTURE FOR USE WITH BLOCK STRUCTURED LANGUAGES
+
+The file em.i (text of the defining interpreter) was hand-edited from int/em.p
 
 
 To print, set NROFF and TBL in the Makefile and call  make.
 To print, set NROFF and TBL in the Makefile and call  make.
 It uses the kun macro package which is also distributed.
 It uses the kun macro package which is also distributed.

+ 29 - 1
doc/em/assem.nr

@@ -588,7 +588,7 @@ Instructions that check for undefined integer or floating-point
 values and underflow or overflow
 values and underflow or overflow
 are indicated below by (*).
 are indicated below by (*).
 .N 1
 .N 1
-.DS B
+.DS
 .ta 12n
 .ta 12n
 GROUP 1 \- LOAD
 GROUP 1 \- LOAD
 
 
@@ -608,7 +608,9 @@ GROUP 1 \- LOAD
   LDE \*g :	Load double external (two consecutive externals are stacked)
   LDE \*g :	Load double external (two consecutive externals are stacked)
   LDF \*f :	Load double offsetted (top of stack + \*f yield address)
   LDF \*f :	Load double offsetted (top of stack + \*f yield address)
   LPI \*p :	Load procedure identifier
   LPI \*p :	Load procedure identifier
+.DE
 
 
+.DS
 GROUP 2 \- STORE
 GROUP 2 \- STORE
 
 
   STL \*l :	Store local or parameter
   STL \*l :	Store local or parameter
@@ -620,7 +622,9 @@ GROUP 2 \- STORE
   SDL \*l :	Store double local or parameter
   SDL \*l :	Store double local or parameter
   SDE \*g :	Store double external
   SDE \*g :	Store double external
   SDF \*f :	Store double offsetted
   SDF \*f :	Store double offsetted
+.DE
 
 
+.DS
 GROUP 3 \- INTEGER ARITHMETIC
 GROUP 3 \- INTEGER ARITHMETIC
 
 
   ADI \*w :	Addition (*)
   ADI \*w :	Addition (*)
@@ -631,7 +635,9 @@ GROUP 3 \- INTEGER ARITHMETIC
   NGI \*w :	Negate (two's complement) (*)
   NGI \*w :	Negate (two's complement) (*)
   SLI \*w :	Shift left (*)
   SLI \*w :	Shift left (*)
   SRI \*w :	Shift right (*)
   SRI \*w :	Shift right (*)
+.DE
 
 
+.DS
 GROUP 4 \- UNSIGNED ARITHMETIC
 GROUP 4 \- UNSIGNED ARITHMETIC
 
 
   ADU \*w :	Addition
   ADU \*w :	Addition
@@ -641,7 +647,9 @@ GROUP 4 \- UNSIGNED ARITHMETIC
   RMU \*w :	Remainder
   RMU \*w :	Remainder
   SLU \*w :	Shift left
   SLU \*w :	Shift left
   SRU \*w :	Shift right
   SRU \*w :	Shift right
+.DE
 
 
+.DS
 GROUP 5 \- FLOATING POINT ARITHMETIC
 GROUP 5 \- FLOATING POINT ARITHMETIC
 
 
   ADF \*w :	Floating add (*)
   ADF \*w :	Floating add (*)
@@ -651,13 +659,17 @@ GROUP 5 \- FLOATING POINT ARITHMETIC
   NGF \*w :	Floating negate (*)
   NGF \*w :	Floating negate (*)
   FIF \*w :	Floating multiply and split integer and fraction part (*)
   FIF \*w :	Floating multiply and split integer and fraction part (*)
   FEF \*w :	Split floating number in exponent and fraction part (*)
   FEF \*w :	Split floating number in exponent and fraction part (*)
+.DE
 
 
+.DS
 GROUP 6 \- POINTER ARITHMETIC
 GROUP 6 \- POINTER ARITHMETIC
 
 
   ADP \*f :	Add \*f to pointer on top of stack
   ADP \*f :	Add \*f to pointer on top of stack
   ADS \*w :	Add \*w-byte value and pointer
   ADS \*w :	Add \*w-byte value and pointer
   SBS \*w :	Subtract pointers in same fragment and push diff as size \*w integer
   SBS \*w :	Subtract pointers in same fragment and push diff as size \*w integer
+.DE
 
 
+.DS
 GROUP 7 \- INCREMENT/DECREMENT/ZERO
 GROUP 7 \- INCREMENT/DECREMENT/ZERO
 
 
   INC \*- :	Increment word on top of stack by 1 (*)
   INC \*- :	Increment word on top of stack by 1 (*)
@@ -670,7 +682,9 @@ GROUP 7 \- INCREMENT/DECREMENT/ZERO
   ZRE \*g :	Zero external
   ZRE \*g :	Zero external
   ZRF \*w :	Load a floating zero of size \*w
   ZRF \*w :	Load a floating zero of size \*w
   ZER \*w :	Load \*w zero bytes
   ZER \*w :	Load \*w zero bytes
+.DE
 
 
+.DS				\" ???
 GROUP 8 \- CONVERT    (stack:	source, source size, dest. size (top))
 GROUP 8 \- CONVERT    (stack:	source, source size, dest. size (top))
 
 
   CII \*- :	Convert integer to integer (*)
   CII \*- :	Convert integer to integer (*)
@@ -682,7 +696,9 @@ GROUP 8 \- CONVERT    (stack:	source, source size, dest. size (top))
   CIU \*- :	Convert integer to unsigned
   CIU \*- :	Convert integer to unsigned
   CUU \*- :	Convert unsigned to unsigned
   CUU \*- :	Convert unsigned to unsigned
   CFU \*- :	Convert floating to unsigned
   CFU \*- :	Convert floating to unsigned
+.DE
 
 
+.DS
 GROUP 9 \- LOGICAL
 GROUP 9 \- LOGICAL
 
 
   AND \*w :	Boolean and on two groups of \*w bytes
   AND \*w :	Boolean and on two groups of \*w bytes
@@ -691,18 +707,24 @@ GROUP 9 \- LOGICAL
   COM \*w :	Complement (one's complement of top \*w bytes)
   COM \*w :	Complement (one's complement of top \*w bytes)
   ROL \*w :	Rotate left a group of \*w bytes
   ROL \*w :	Rotate left a group of \*w bytes
   ROR \*w :	Rotate right a group of \*w bytes
   ROR \*w :	Rotate right a group of \*w bytes
+.DE
 
 
+.DS
 GROUP 10 \- SETS
 GROUP 10 \- SETS
 
 
   INN \*w :	Bit test on \*w byte set (bit number on top of stack)
   INN \*w :	Bit test on \*w byte set (bit number on top of stack)
   SET \*w :	Create singleton \*w byte set with bit n on (n is top of stack)
   SET \*w :	Create singleton \*w byte set with bit n on (n is top of stack)
+.DE
 
 
+.DS
 GROUP 11 \- ARRAY
 GROUP 11 \- ARRAY
 
 
   LAR \*w :	Load array element, descriptor contains integers of size \*w
   LAR \*w :	Load array element, descriptor contains integers of size \*w
   SAR \*w :	Store array element
   SAR \*w :	Store array element
   AAR \*w :	Load address of array element
   AAR \*w :	Load address of array element
+.DE
 
 
+.DS
 GROUP 12 \- COMPARE
 GROUP 12 \- COMPARE
 
 
   CMI \*w :	Compare \*w byte integers, Push negative, zero, positive for <, = or >
   CMI \*w :	Compare \*w byte integers, Push negative, zero, positive for <, = or >
@@ -717,7 +739,9 @@ GROUP 12 \- COMPARE
   TNE \*- :	True if not equal, i.e. iff top of stack non zero
   TNE \*- :	True if not equal, i.e. iff top of stack non zero
   TGE \*- :	True if greater or equal, i.e. iff top of stack >= 0
   TGE \*- :	True if greater or equal, i.e. iff top of stack >= 0
   TGT \*- :	True if greater, i.e. iff top of stack > 0
   TGT \*- :	True if greater, i.e. iff top of stack > 0
+.DE
 
 
+.DS				\" ???
 GROUP 13 \- BRANCH
 GROUP 13 \- BRANCH
 
 
   BRA \*b :	Branch unconditionally to label \*b
   BRA \*b :	Branch unconditionally to label \*b
@@ -735,14 +759,18 @@ GROUP 13 \- BRANCH
   ZNE \*b :	Branch not zero
   ZNE \*b :	Branch not zero
   ZGE \*b :	Branch greater or equal zero
   ZGE \*b :	Branch greater or equal zero
   ZGT \*b :	Branch greater than zero
   ZGT \*b :	Branch greater than zero
+.DE
 
 
+.DS
 GROUP 14 \- PROCEDURE CALL
 GROUP 14 \- PROCEDURE CALL
 
 
   CAI \*- :	Call procedure (procedure identifier on stack)
   CAI \*- :	Call procedure (procedure identifier on stack)
   CAL \*p :	Call procedure (with identifier \*p)
   CAL \*p :	Call procedure (with identifier \*p)
   LFR \*s :	Load function result
   LFR \*s :	Load function result
   RET \*z :	Return (function result consists of top \*z bytes)
   RET \*z :	Return (function result consists of top \*z bytes)
+.DE
 
 
+.DS
 GROUP 15 \- MISCELLANEOUS
 GROUP 15 \- MISCELLANEOUS
 
 
   ASP \*f :	Adjust the stack pointer by \*f
   ASP \*f :	Adjust the stack pointer by \*f