B.1.9 New Opcodes

Eight new opcodes were added to the Rabbit 3000A. UMA and UMS allow multiply-and- add and multiply-and-subtract operations on large integers, and were added to speed up common cryptographic math used in public-key calculations. The remaining six expand the block copy operations available, especially to and from I/O addresses (internal and external). These opcodes are listed in Table B-18.

Table B-18. New Rabbit 3000 Opcodes

Instruction

Bytes

Clks

A

I

S

Z

V

C

Operation

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{CY:DE':(HL) = (IX) + [(IY) * DE + DE' + CY];

UMA

2

8+8i

 

-

-

-

-

*

BC = BC-1; IX = IX+1; IY = IY+1; HL = HL+1;

 

 

 

 

 

 

 

 

 

repeat while BC !=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{CY:DE:(HL) = (IX) - [(IY) * DE + DE' + CY];

UMS

2

8+8i

 

-

-

-

-

*

BC = BC-1; IX = IX+1; IY = IY+1; HL = HL+1;

 

 

 

 

 

 

 

 

 

repeat while BC !=0

 

 

 

 

 

 

 

 

 

 

LDDSR

2

6+7i

 

d

-

-

*

-

(DE) = (HL); BC = BC - 1; HL = HL - 1;

 

 

 

 

 

 

 

 

 

repeat while BC != 0

LDISR

2

6+7i

 

d

-

-

*

-

(DE) = (HL); BC = BC - 1; HL = HL + 1;

 

repeat while BC != 0

 

 

 

 

 

 

 

 

 

 

LSDR

2

6+7i

 

s

-

-

*

-

(DE) = (HL); BC = BC - 1; DE = DE - 1;

 

HL = HL - 1; repeat while BC != 0

 

 

 

 

 

 

 

 

 

 

LSIR

2

6+7i

 

s

-

-

*

-

(DE) = (HL); BC = BC - 1; DE = DE + 1;

 

 

 

 

 

 

 

 

 

HL = HL + 1; repeat while BC != 0

LSDDR

2

6+7i

 

s

-

-

*

-

(DE) = (HL); BC = BC - 1; DE = DE - 1;

 

repeat while BC != 0

 

 

 

 

 

 

 

 

 

 

LSIDR

2

6+7i

 

s

-

-

*

-

(DE) = (HL); BC = BC - 1; DE = DE + 1;

 

repeat while BC != 0

 

 

 

 

 

 

 

 

 

 

B.1.9.1 New UMA/UMS Opcodes

The new UMA and UMS opcodes perform the following operation:

{CY:DE':(HL)} = (IX) ± [(IY) * DE + DE' + CY];

where HL, IX, and IY increment after each byte, repeated BC times. This fundamental operation allows the addition or subtraction of two arbitrarily-long unsigned integers after one is scaled by a single-byte value. This operation is common in many cryptographic operations.

User’s Manual

293

Page 302
Image 302
Jameco Electronics 2000 manual New Opcodes, Table B-18. New Rabbit 3000 Opcodes, Instruction Bytes Clks Operation