 |
VAX MACRO and Instruction Set Reference Manual
ACB
Add Compare and Branch
Format
opcode limit.rx, add.rx, index.mx, displ.bw
Condition Codes
N|| <--- index LSS 0;
|
|
Z|| <--- index EQL 0;
|
|
V|| <--- {integer overflow};
|
|
C|| <--- C;
|
|
Exceptions
integer overflow
floating overflow
floating underflow
reserved operand
Opcodes
9D
|
ACBB
|
Add Compare and Branch Byte
|
3D
|
ACBW
|
Add Compare and Branch Word
|
F1
|
ACBL
|
Add Compare and Branch Long
|
4F
|
ACBF
|
Add Compare and Branch F_floating
|
4FFD
|
ACBG
|
Add Compare and Branch G_floating
|
6F
|
ACBD
|
Add Compare and Branch D_floating
|
6FFD
|
ACBH
|
Add Compare and Branch H_floating
|
Description
The addend operand is added to the index operand and the index operand
is replaced by the result. The index operand is compared with the limit
operand. If the addend operand is positive (or zero) and the comparison
is less than or equal to zero, or if the addend is negative and the
comparison is greater than or equal to zero, the sign-extended branch
displacement is added to the program counter (PC), and the PC is
replaced by the result.
Notes
- ACB efficiently implements the general FOR or DO loops in
high-level languages, since the sense of the comparison between
index and limit is dependent on the
sign of the addend.
- On integer overflow, the index operand is replaced by the low-order
bits of the true result. Comparison and branch determination proceed
normally on the updated index operand.
- On floating underflow, if FU is clear, the index operand is
replaced by zero, and comparison and branch determination proceed
normally. A fault occurs if FU is set, and the index operand is
unaffected.
- On floating overflow, the instruction takes a floating overflow
fault, and the index operand is unaffected.
- On a reserved operand fault, the index operand is unaffected, and
condition codes are UNPREDICTABLE.
- Except for the circumstance described in note 5, the C-bit is
unaffected.
AOBLEQ
Add One and Branch Less Than or Equal
Format
opcode limit.rl, index.ml, displ.bb
Condition Codes
N|| <--- index LSS 0;
|
|
Z|| <--- index EQL 0;
|
|
V|| <--- {integer overflow};
|
|
C|| <--- C;
|
|
Exceptions
integer overflow
Opcodes
F3
|
AOBLEQ
|
Add One and Branch Less Than or Equal
|
Description
One is added to the index operand, and the index operand is replaced by
the result. The index operand is compared with the limit operand. If
the comparison is less than or equal to zero, the sign-extended branch
displacement is added to the program counter (PC), and the PC is
replaced by the result.
Notes
- Integer overflow occurs if the index operand before addition is the
largest positive integer. On overflow, the index operand is replaced by
the largest negative integer, and the branch is taken.
- The C-bit is unaffected.
AOBLSS
Add One and Branch Less Than
Format
opcode limit.rl, index.ml, displ.bb
Condition Codes
N|| <--- index LSS 0;
|
|
Z|| <--- index EQL 0;
|
|
V|| <--- {integer overflow};
|
|
C|| <--- C;
|
|
Exceptions
integer overflow
Opcodes
F2
|
AOBLSS
|
Add One and Branch Less Than
|
Description
One is added to the index operand and the index operand is replaced by
the result. The index operand is compared with the limit operand. If
the comparison result is less than zero, the sign-extended branch
displacement is added to the program counter (PC), and the PC is
replaced by the result.
Notes
- Integer overflow occurs if the index operand before addition is the
largest positive integer. On overflow, the index operand is replaced by
the largest negative integer, and thus (unless the limit operand is the
largest negative integer), the branch is taken.
- The C-bit is unaffected.
B
Branch on (condition)
Format
opcode displ.bb
Condition Codes
N|| <--- N;
|
|
Z|| <--- Z;
|
|
V|| <--- V;
|
|
C|| <--- C;
|
|
Exceptions
None.
Opcodes
14
|
{N OR Z} EQL 0
|
BGTR
|
Branch on Greater Than (signed)
|
15
|
{N OR Z} EQL 1
|
BLEQ
|
Branch on Less Than or Equal (signed)
|
12
|
Z EQL 0
|
BNEQ,
|
Branch on Not Equal (signed)
|
|
|
BNEQU
|
Branch on Not Equal Unsigned
|
13
|
Z EQL 1
|
BEQL,
|
Branch on Equal (signed)
|
|
|
BEQLU
|
Branch on Equal Unsigned
|
18
|
N EQL 0
|
BGEQ
|
Branch on Greater Than or Equal (signed)
|
19
|
N EQL 1
|
BLSS
|
Branch on Less Than (signed)
|
1A
|
{C OR Z} EQL 0
|
BGTRU
|
Branch on Greater Than Unsigned
|
1B
|
{C OR Z} EQL 1
|
BLEQU
|
Branch Less Than or Equal Unsigned
|
1C
|
V EQL 0
|
BVC
|
Branch on Overflow Clear
|
1D
|
V EQL 1
|
BVS
|
Branch on Overflow Set
|
1E
|
C EQL 0
|
BGEQU,
|
Branch on Greater Than or Equal Unsigned
|
|
|
BCC
|
Branch on Carry Clear
|
1F
|
C EQL 1
|
BLSSU,
|
Branch on Less Than Unsigned
|
|
|
BCS
|
Branch on Carry Set
|
Description
The condition codes are tested. If the condition indicated by the
instruction is met, the sign-extended branch displacement is added to
the program counter (PC), and the PC is replaced by the result.
Notes
The VAX conditional branch instructions permit considerable flexibility
in branching but require care in choosing the correct branch
instruction. The conditional branch instructions are best seen as three
overlapping groups:
- Overflow and Carry Group
BVS
|
V EQL 1
|
BVC
|
V EQL 0
|
BCS
|
C EQL 1
|
BCC
|
C EQL 0
|
Typically, you would use these instructions to check for overflow
(when overflow traps are not enabled), for multiprecision arithmetic,
and for other special purposes.
- Unsigned Group
BLSSU
|
C EQL 1
|
BLEQU
|
{C OR Z} EQL 1
|
BEQLU
|
Z EQL 1
|
BNEQU
|
Z EQL 0
|
BGEQU
|
C EQL 0
|
BGTRU
|
{C OR Z} EQL 0
|
These instructions typically follow integer and field instructions
where the operands are treated as unsigned integers, address
instructions, and character string instructions.
- Signed Group
BLSS
|
N EQL 1
|
BLEQ
|
{N OR Z} EQL 1
|
BEQL
|
Z EQL 1
|
BNEQ
|
Z EQL 0
|
BGEQ
|
N EQL 0
|
BGTR
|
{N OR Z} EQL 0
|
These instructions typically follow floating-point instructions,
decimal string instructions, and integer and field instructions where
the operands are being treated as signed integers.
BB
Branch on Bit
Format
opcode pos.rl, base.vb, displ.bb
Condition Codes
N|| <--- N;
|
|
Z|| <--- Z;
|
|
V|| <--- V;
|
|
C|| <--- C;
|
|
Exceptions
reserved operand
Opcodes
E0
|
BBS
|
Branch on Bit Set
|
E1
|
BBC
|
Branch on Bit Clear
|
Description
The single bit field specified by the position and base operands is
tested. If it is in the test state indicated by the instruction, the
sign-extended branch displacement is added to the program counter (PC),
and the PC is replaced by the result.
Notes
- A reserved operand fault occurs if pos GTRU 31 and
the bit specified is contained in a register.
- On a reserved operand fault, the condition codes are UNPREDICTABLE.
BB
Branch on Bit (and modify without interlock)
Format
opcode pos.rl, base.vb, displ.bb
Condition Codes
N|| <--- N;
|
|
Z|| <--- Z;
|
|
V|| <--- V;
|
|
C|| <--- C;
|
|
Exceptions
reserved operand
Opcodes
E2
|
BBSS
|
Branch on Bit Set and Set
|
E3
|
BBCS
|
Branch on Bit Clear and Set
|
E4
|
BBSC
|
Branch on Bit Set and Clear
|
E5
|
BBCC
|
Branch on Bit Clear and Clear
|
Description
The single bit field specified by the position and base operands is
tested. If it is in the test state indicated by the instruction, the
sign-extended branch displacement is added to the program counter (PC),
and the PC is replaced by the result. Regardless of whether the branch
is taken or not, the tested bit is put in the new state as indicated by
the instruction.
Notes
- A reserved operand fault occurs if pos GTRU 31 and
the bit is contained in a register.
- On a reserved operand fault, the field is unaffected, and the
condition codes are UNPREDICTABLE.
- The modification of the bit is not an interlocked operation. See
BBSSI and BBCCI for interlocking instructions.
BB
Branch on Bit Interlocked
Format
opcode pos.rl, base.vb, displ.bb
Condition Codes
N|| <--- N;
|
|
Z|| <--- Z;
|
|
V|| <--- V;
|
|
C|| <--- C;
|
|
Exceptions
reserved operand
Opcodes
E6
|
BBSSI
|
Branch on Bit Set and Set Interlocked
|
E7
|
BBCCI
|
Branch on Bit Clear and Clear Interlocked
|
Description
The single bit field specified by the position and base operands is
tested. If it is in the test state indicated by the instruction, the
sign-extended branch displacement is added to the program counter (PC),
and the PC is replaced by the result. Regardless of whether the branch
is taken, the tested bit is put in the new state as indicated by the
instruction. If the bit is contained in memory, the reading of the
state of the bit and the setting of the bit to the new state is an
interlocked operation. No other processor or I/O device can do an
interlocked access on this bit during the interlocked operation.
Notes
- A reserved operand fault occurs if pos GTRU 31 and
the specified bit is contained in a register.
- On a reserved operand fault, the field is unaffected, and the
condition codes are UNPREDICTABLE.
- Except for memory interlocking, BBSSI is equivalent to BBSS, and
BBCCI is equivalent to BBCC.
- This instruction is designed to modify interlocks with other
processors or devices. For example, to implement "busy
waiting":
BLB
Branch on Low Bit
Format
opcode src.rl, displ.bb
Condition Codes
N|| <--- N;
|
|
Z|| <--- Z;
|
|
V|| <--- V;
|
|
C|| <--- C;
|
|
Exceptions
None.
Opcodes
E8
|
BLBS
|
Branch on Low Bit Set
|
E9
|
BLBC
|
Branch on Low Bit Clear
|
Description
The low bit (bit 0) of the source operand is tested. If it is equal to
the test state indicated by the instruction, the sign-extended branch
displacement is added to the program counter (PC), and the PC is
replaced by the result.
BR
Branch
Format
opcode displ.bx
Condition Codes
N|| <--- N;
|
|
Z|| <--- Z;
|
|
V|| <--- V;
|
|
C|| <--- C;
|
|
Exceptions
None.
Opcodes
11
|
BRB
|
Branch with Byte Displacement
|
31
|
BRW
|
Branch with Word Displacement
|
Description
The sign-extended branch displacement is added to the program counter
(PC), and the PC is replaced by the result.
BSB
Branch to Subroutine
Format
opcode displ.bx
Condition Codes
N|| <--- N;
|
|
Z|| <--- Z;
|
|
V|| <--- V;
|
|
C|| <--- C;
|
|
Exceptions
None.
Opcodes
10
|
BSBB
|
Branch to Subroutine with Byte Displacement
|
30
|
BSBW
|
Branch to Subroutine with Word Displacement
|
Description
The program counter (PC) is pushed on the stack as a longword. The
sign-extended branch displacement is added to the PC, and the PC is
replaced by the result.
|