The general sequence is:

 

LDA

Rdst, low(R31)

 

LDAH

Rdst, extra(Rdst)

! Omit if extra=0

LDAH

Rdst, high(Rdst)

! Omit if high=0

A.4.4.4 Register-to-Register Move

The standard register move forms are:

MOV RX,RY

==

BIS

RX,RX,RY

FMOV FX,FY

==

CPYS

FX,FX,FY

These move forms generate no exceptions. In most implementations, these should encounter no functional unit issue delay.

A.4.4.5 Negate

The standard register negate forms are:

NEGz Rx,Ry

==

SUBz

R31,Rx,Ry

! z = L or Q

NEGz Fx,Fy

==

SUBz

F31,Fx,Fy

! z = F G S or T

FNEGz Fx,Fy

==

CPYSN

Fx,Fx,Fy

! z = F G S or T

The integer subtract generates no Integer Overflow trap if Rx contains the largest negative number (SUBz/V would trap). The floating subtract generates a floating-point exception for a non-finite value in Fx. The CPYSN form generates no exceptions.

A.4.4.6 NOT

The standard integer register NOT form is:

NOT Rx,Ry

==

ORNOT R31,Rx,Ry

This generates no exceptions. In most implementations, this should encounter no functional unit issue delay.

A.4.4.7 Booleans

The standard alternative to BIS is:

OR Rx,Ry,Rz

==

BIS

Rx,Ry,Rz

The standard alternative to BIC is:

ANDNOT Rx,Ry,Rz ==

BIC

Rx,Ry,Rz

The standard alternative to EQV is:

XORNOT Rx,Ry,Rz ==

EQV

Rx,Ry,Rz

Software Considerations A–13

Page 287
Image 287
Compaq ECQD2KCTE manual Register-to-Register Move, Negate, 4.6 not, Booleans