small adjustments
This commit is contained in:
parent
43fd3df629
commit
1cd71875ac
2 changed files with 32 additions and 2 deletions
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue