multics logo Multics > History > Features
14 Oct 2000

DPS 8M Machine Instructions

(This page has a few highlights of chapter 4 of AL39-01, the processor manual for Multics).

Instruction Repertoire

Basic Operations

The 456 basic operations in the processor all require exactly one 36-bit machine word. They are categorized as follows:

181 Fixed-point binary arithmetic
85 Boolean operations
34 Floating-point binary arithmetic
36 Transfer of control
75 Pointer Register
17 Miscellaneous
28 Privileged

Extended Instruction Set (EIS) Operations

The 91 extended instruction set (EIS) operations are divided into 62 EIS single-word instructions and 29 EIS multiword instructions.

EIS Single-word Operations

The 62 EIS single-word instructions load, store, and perform special arithmetic on the address registers (ARn) used to access bit- and character-string operands, and safe-store decimal unit (DU) control information required to service a processor fault or interrupt. Like the basic operations, EIS single-word instructions require exactly one 36-bit machine word.

EIS Multiword Operations

The 29 EIS multiword instructions perform decimal arithmetic and bit- and character-string operations. They require three or four 36-bit machine words depending on individual operand descriptor requirements.

Instruction Word Formats

Basic and EIS Single-Word Instructions

Bits 0-17 - ADDRESS (many formats possible for the address)
Bits 18-27 - OPCODE
Bit 28 - I (Interrupt Inhibit)
Bit 29 - A (Indirect via pointer register flag)
Bits 30-35 - TAG (Instruction address modifier)

Indirect Words

Certain of the basic EIS single-word instructions permit indirection to be specified as part of address modification. When such indirection is specified, C(Y) (the resulting target address of the instruction - Ed.) is interpreted as an indirect word according to the following format:

Bits 0-17 - ADDRESS (many formats possible)
Bits 18-29 - TALLY (count field)
Bits 30-35 - TAG (several formats, depending on TAG of original instruction)

Fixed Point Arithmetic Instructions

Fixed-Point Data Movement Load

eaa Effective Address to A
eaq Effective Address to Q
eaxn Effective Address to Index Register n
lca Load Complement A
lcaq Load Complement AQ
lcq Load Complement Q
lcxn Load Complement Index Register n
lda Load A
ldac Load A and Clear
ldaq Load AQ
ldi Load Indicator
ldq Load Q
ldqc Load Q and Clear
ldxn Load Index Register n
lreg Load Registers
lxln Load Index Register n from Lower
sreg Store Registers
stba Store Bytes of A
stbq Store Bytes of Q
stc1 Store Instruction Counter Plus 1
stc2 Store Instruction Counter Plus 2
stca Store Characters of A
stcq Store Characters of Q
stcd Store Control Double
sti Store Indicator Register
stq Store Q
stt Store Time Register
stxn Store Index Register n
stz Store Zero
sxln Store Index Register n in Lower

Fixed-Point Data Movement Shift

alr A Left Rotate
als A Left Shift
arl A Right Logical
ars A Right Shift
llr Long Left Rotate
lls Long Left Shift
lrl Long Right Logical
lrs Long Right Shift
qlr Q Left Rotate
qls Q Left Shift
qrl Q Right Logical
qrs Q Right Shift

Fixed-Point Addition

ada Add to A
adaq Add to AQ
adl Add Low o AQ
adla Add Logical to A
adlaq Add Logical to AQ
adlq Add Logical to Q
adlxn Add Logical to Index Register n
adq Add to Q
adxn Add to Index Register n
aos Add One to Storage
asa Add Stored to A
asq Add Stored to Q
asxn Add Stored to Index Register n
awca Add with Carry to A
awcq Add with Carry to Q

Fixed-Point Subtraction

sba Subtract from A
sbaq Subtract from AQ
sbla Subtract Logical from A
sblaq Subtract Logical from AQ
sblq Subtract Logical from Q
sblxn Subtract Logical from Index Register n
sbq Subtract from Q
sbxn Subtract from Index Register n
ssa Subtract Stored from A
ssq Subtract Stored from Q
ssxn Subtract Stored from Index Register n
swca Subtract with Carry from A
swcq Subtract with Carry from Q

Fixed-Point Multiplication

mpf Multiply Fraction
mpy Multiply Integer

Fixed-Point Division

div Divide Integer
dvf Divide Fraction

Fixed-Point Negate

neg Negate A
negl Negate Long

Fixed-Point Comparison

cmg Compare Magnitude
cmk Compare Masked
cmpa Compare with A
cmpaq Compare with AQ
cmpq Compare with Q
cmpxn Compare with Index Register n
cwl Compare with Limits

Fixed-Point Miscellaneous

szn Set Zero and Negative Indicators
sznc Set Zero and Negative Indicators and Clear

Boolean Operations Instructions

Boolean And

ana AND to A
anaq AND to AQ
anq AND to Q
ansa AND to Storage A
ansq AND to Storage Q
ansxn AND to Storage Index Register n
anxn AND to Index Register n

Boolean Or

ora OR to A
oraq OR to AQ
orq OR to Q
orsa OR to Storage A
orsq OR to Storage Q
orsxn OR to Storage Index Register n
orxn OR to Index Register n

Boolean Exclusive Or

era EXCLUSIVE OR to A
eraq EXCLUSIVE OR to AQ
erq EXCLUSIVE OR to Q
ersa EXCLUSIVE OR to Storage A
ersq EXCLUSIVE OR to Storage Q
ersxn EXCLUSIVE OR to Storage Index Register n
erxn EXCLUSIVE OR to Index Register n

Boolean Comparative And

cana Comparative AND with A
canaq Comparative AND with AQ
canq Comparative AND with Q
canxn Comparative AND with Index Register n

Boolean Comparative Not

cnaa Comparative NOT with A
cnaaq Comparative NOT with AQ
cnaq Comparative NOT with Q
cnaxn Comparative NOT with Index Register n

Floating-Point Arithmetic Instructions

Floating-Point Data Movement Load

dfld Double-Precision Floating Load
fld Floating Load
dfst Double-Precision Floating Store
dfstr Double-Precision Floating Store Rounded
fst Floating Store
fstr Floating Store Rounded

Floating-Point Addition

dfad Double-Precision Floating Add
dufa Double-Precision Unnormalized Floating Add
fad Floating Add
ufa Unnormalized Floating Add

Floating-Point Subtraction

dfsb Double-Precision Floating Subtraction
dufs Double-Precision Unnormalized Floating Subtraction
fsb Floating Subtraction
ufs Unnormalized Floating Subtraction

Floating-Point Multiplication

dfmp Double-Precision Floating Multiply
dufm Double-Precision Unnormalized Floating Multiply
fmp Floating Multiply
ufm Unnormalized Floating Multiply

Floating-Point Division

dfdi Double-Precision Floating Divide Inverted
dfdv Double-Precision Floating Divide
fdi Floating Divide Inverted
fdv Floating Divide

Floating-Point Negate

fneg Floating Negate

Floating-Point Normalize

fno Floating Normalize

Floating-Point Round

dfrd Double-Precision Floating Round
frd Floating Round

Floating-Point Compare

dfcmg Double-Precision Floating Compare Magnitude
dfcmp Double-Precision Floating Compare
fcmg Floating Compare Magnitude
fcmp Floating Compare

Floating-Point Miscellaneous

ade Add to Exponent
fszn Floating Set Zero and Negative Indicators
lde Load Exponent
ste Store Exponent

Transfer Instructions

call6 Call (using PR6 and PR7)
ret Return
rtcd Return Control Double
teo Transfer on Exponent Overflow
teu Transfer on Exponent Underflow
tmi Transfer on Minus
tmoz Transfer on Minus or Zero
tnc Transfer on No Carry
tnz Transfer on Nonzero
tov Transfer on Overflow
tpl Transfer on Plus
tpnz Transfer on Plus and Nonzero
tra Transfer Unconditionally
trc Transfer on Carry
trtf Transfer on Truncation Indicator OFF
trtn Transfer on Truncation Indicator ON
tspn Transfer and Set Pointer Register n
tss Transfer and Set Slave
tsxn Transfer and Set Index Register n
ttf Transfer on Tally Runout Indicator OFF
ttn Transfer on Tally Runout Indicator ON
tze Transfer on Zero

Pointer Register Instructions

Pointer Register Data Movement Load

easpn Effective Address to Segment Number of Pointer Register n
epbpn Effective Pointer at Base to Pointer Register n
eppn Effective pointer to Pointer Register n
lpri Load Pointer Registers from ITS Pairs
lprpn Load Pointer Register n Packed
spbpn Store Segment Base Pointer of Pointer Register n
spri Store Pointer Registers as ITS Pairs
sprin Store Pointer Register n as ITS Pairs
sprpn Store Pointer Register n Packed

Pointer Register Address Arithmetic

adwpn Add Word Number of Pointer Register n

Pointer Register Miscellaneous

epaq Effective Pointer to AQ

Miscellaneous Instructions

Calendar Clock

rccl Read Calendar Clock

Derail

drl Derail

Execute

xec Execute
xed Execute Double

Master Mode Entry

mme Master Mode Entry
mme2 Master Mode Entry 2
mme3 Master Mode Entry 3
mme4 Master Mode Entry 4

No Operation

nop No Operation
puls1 Pulse One
puls2 Pulse Two

Repeat

rpd Repeat Double
rpl Repeat Link
rpt Repeat

Ring Alarm Register

sra Store Ring Alarm Register

Store Base Address Register

sbar Store Base Address Register

Translation

bcd Binary to Binary-Coded-Decimal
gtb Gray to Binary

Register Load

lbar Load Base Address Register

Privileged Instructions

Privileged - Register Load

lcpr Load Central Processor Register
ldbr Load Descriptor Segment Base Register
ldt Load Timer Register
lptp Load Page Table Pointers
lptr Load Page Table Registers
lra Load Ring Alarm Register
lsdp Load Segment Descriptor Pointers
lsdr Load Segment Descriptor Registers
rcu Restore Control Unit

Privileged - Register Store

scpr Store Central Processor Register
scu Store Control Unit
sdbr Store Descriptor Segment Base Register
sptp Store Page Table Pointers
sptr Store Page Table Registers
ssdp Store Segment Descriptor Pointers
ssdr Store Segment Descriptor Registers

Privileged - Clear Associative Memory

camp Clear Associative Memory Pages
cams Clear Associative Memory Segments

Privileged - Configuration and Status

rmcm Read Memory Controller Mask Register
rscr Read System Controller Register
rsw Read Switches

Privileged - System Control

cioc Connect I/O Channel
smcm Set Memory Controller Mask Register
smic Set Memory Controller Interrupt Cells
sscr Set System Controller Register

Privileged - Miscellaneous

absa Absolute Address to A-Register
dis Delay Until Interrupt Signal

Extended Instruction Set (EIS)

EIS - Address Register Load

asrn Alphanumeric Descriptor to Address Register n
larn Load Address Register n
lareg Load Address Registers
lpl Load Pointers and Lengths
narn Numeric Descriptor to Address Register n

EIS - Register Store

aran Address Register n to Alphanumeric Descriptor
arnn Address Register n to Numeric Descriptor
sarn Store Address Register n
sareg Store Address Registers
spl Store Pointers and Lengths

EIS - Address Register Special Arithmetic

a4bd Add 4-bit Displacement to Address Register
a6bd Add 6-bit Displacement to Address Register
a9bd Add 9-bit Displacement to Address Register
abd Add Bid Displacement to Address Register
awd Add Word Displacement to Address Register
s4bd Subtract 4-bit Displacement from Address Register
s6bd Subtract 6-bit Displacement from Address Register
s9bd Subtract 9-bit Displacement from Address Register
sbd Subtract bit Displacement from Address Register
swd Subtract Word Displacement from Address Register

EIS - Alphanumeric Compare

cmpc Compare Alphanumeric Character Strings
scd Scan Characters Double
scdr Scan Characters Double in Reverse
scm Scan with Mask
scmr Scan with Mask in Reverse
tct Test Character and Translate
tctr Test Character and Translate in Reverse

EIS - Alphanumeric Move

mlr Move Alphanumeric Left to Right
mrl Move Alphanumeric Right to Left
mve Move Alphanumeric Edited
mvt Move Alphanumeric with Translation

EIS - Numeric Compare

cpmn Compare Numeric

EIS - Numeric Move

mvn Move Numeric
mvne Move Numeric Edited

EIS - Bit String Combine

csl Combine Bit Strings Left
csr Combine Bit Strings Right

EIS - Bit String Compare

cmpb Compare Bit Strings

EIS - Bit Strings Set Indicators

sztl Set Zero and Truncation Indictors with Bit Strings Left
sztr Set Zero and Truncation Indictors with Bit Strings Right

EIS - Data Conversion

btd Binary to Decimal Convert
dtb Decimal to Binary Convert

EIS - Decimal Addition

ad2d Add Using Two Decimal Operands
ad3d Add Using Three Decimal Operands

EIS - Decimal Subtraction

sb2d Subtract Using Two Decimal Operands
sb3d Subtract Using Three Decimal Operands

EIS - Decimal Multiplication

mp2d Multiply Using Two Decimal Operands
mp3d Multiply Using Three Decimal Operands

EIS - Decimal Division

dv2d Divide Using Two Decimal Operands
dv3d Divide Using Three Decimal Operands

Micro Operations for Edit Instructions

(In the mve and mvne instructions, you can 'program' the instruction with a number of operations. Here are their titles. They are not operations, they are sub-operations of mve and mvne)

Micro Operations

cht Change Table (21)
enf End Floating Suppression (02)
ign Ignore Source Character (14)
insa Insert Asterisk on Suppression (11) (useful for printing checks from COBOL Ed.)
insb Insert Blank on Suppression (10)
insm Insert Table Entry One Multiple (01)
insn Insert On Negative (12)
insp Insert On Positive (13)
lte Load Table Entry (20)
mflc Move with Floating Currency Symbol Insertion (07)
mfls Move with Floating Sign Insertion (06)
mors Move and OR Sign (17)
mses Move and Set Sign (16)
mvc Move Source Characters (15)
mvza Move with Zero Suppression and Asterisk Replacement (05)
mvzb Move with Zero Suppression and Blank Replacement (04)
ses Set End Suppression (03)

Last modified: 10/14/00 by Ron Harvey

AltStyle によって変換されたページ (->オリジナル) /