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
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