691222_Extension_of_PDP 11_Instruction_Set_ _Floating_Point 691222 Extension Of PDP 11 Instruction Set Floating Point
User Manual: 691222_Extension_of_PDP-11_Instruction_Set_-_Floating_Point
Open the PDF directly: View PDF .
Page Count: 2
momoomo
INTEROFFICE
SUBJECT:
Extension
of
PDP-II
Instruction
set
-
Floating
pt.
TO:
Bruce
Delagi
LOCATION:
MEMORANDUM
DATE:
December
22,
1969
FROM:
Grant
Saviers
LOCATION:
Assume
that
a
floating
pt
processor
(Multiply,
Divide,
Add,
Subtract,
Float,
Entier)
is
interfaced
to
the
unibus.
Associate
6 memory
(I/O)
locations
with
the
floating'pt
functions.
Use
the
Move
instruction
to
extend
the
instruction
set,
as
follows:
MOV
address,
function
where
function
is
one
of
the
six
addresses
associated
with
the
FP
processor.
The
output
word
is
an
address
pointer
to
a 3
word
tabl~
of
operand
addresses.
Address
Location
of
operand
1
II
II
u 2
..
II
result
The
FP
processor
then
obtains
operands
and
stores
the
result.
For
multiple
word
operands,
this
technique
is
faster
and
requires
less
core
than
distinct
moves
of
addresses
or
operands.
Hand
translating
the
expression.
F =
(A
+
(B
*
c)/(~
+
B»*
F
Results
Code
Move
z,
mult
z
Move
y,
add
Move
x,
div
'y
Move
v,
mult
x
w
v
this
would
change
example
to
y
x
w
Address
pointers
B
C
tl
A
B
t2
tl
t2
t3
A
t4
F
F
A
B
t2
tl
t3
CO~PO~ATION
•
MAYNARO.
MASSACHUSET'TS
page
two
December'22,
1969
,
Note
that
the
code
is
automatically
l'optimized
ll
to
eliminate
unnecessary
saving
of
results
(tn's)
and
that
no
Moves
are
required,
even
for
the
replacement
(=)
operation.
This
technique
has
definite
possibilities
for
common
subexpression
evaluation/optimization.
It
is
clear
that
the
I/O
devices
should
have
access
to
the
condition
codes
for
this
to
really
work.
For
the
anti-symmetric
operators
(-)/
it
may
not
cost
much
(in
terms
of
instruction
codes)
to
have
the
backwards
operators.
e.g.
normal/
address
list
backwards/
A
Be::
'A/B
C
A
B
C
C =
B/A
G.E.
apparently
thought
backwards
operators
useful
enough
to
include
in
instruction
sets,
to
avoid
swapping
registers/core.
with
3
address
instructions
they
may
be
superfluous.
Note
that
the
end
result
looks
suspiciously
like
a
tistack"
machine
with
operators
in
one
stack
and
operands
in
the
other.
I
mentioned
this
technique
to
Ad
van
de
Goor.
He
proposed
putting
Qperators
on
same
stack,
but
note
that
you
still
must
have
an
¥in~ruction
to
initiate
the
operation.
As a
generalization,
I
believe
one
should
always
pass
the
address
at
a
descriptor
table,
so
that
the
table
may
be
completely
general.
This
also
has
the
advantage
that
only
one
word1~
~ved.
Ad
suggests
a
micro-programmed
arithmetic
processor
for
things
like
matrix
multiply
or
even
implementation
of
the
floating
point.
Note
that
for
a 3
address
pointer
table,
the
instructions
and
table
are
independent
of
arithmetic
precision.
Only
actual
reserved
operand
locations
are
different.
Why
mess
around
with
other
machines
when
such
things
are
possible
on
the
ll?
/bca