Subtract Space Pointer Offset (SUBSPP)


Op Code (Hex) Operand 1 Operand 2 Operand 3
0087 Receiver pointer Source pointer Decrement
Operand 1: Space pointer.

Operand 2: Space pointer.

Operand 3: Binary scalar.

Description  The value of the binary scalar specified by operand 3 is subtracted from the space address contained in the space pointer specified by operand 2; the result is stored in the space pointer identified by operand 1. I.e.

    Operand 1 = Operand 2 - Operand 3

Operand 3 can have a positive or negative value. The space object that the pointer is addressing is not changed by the instruction. If operand 2 does not contain a space pointer, a pointer type invalid  (hex 2402) exception is signaled.

When the addressability in the space pointer is modified, the instruction signals a space addressing violation  (hex 0601) exception when one of the following conditions occurs, for any space except teraspace:

If the exception is signaled by this instruction for one of these reasons, the pointer is not modified by the instruction.

In contrast, when modifying the addressability of a space pointer to teraspace, if the address computed either overflows or underflows the offset, the result is wrapped back within teraspace and no exception is signalled. However, since the size of teraspace and thus the size of the offset portion of a teraspace address is implementation-dependent, the wrapped result may vary between machine implementations.

Attempts to use a pointer whose offset value lies: between the currently allocated extent of the space and the maximum allocatable extent of the space, or whose offset is outside all teraspace allocations, cause the space addressing violation  (hex 0601) exception to be signaled.

The object destroyed  (hex 2202) exception, parameter reference violation  (hex 0801) exception, and pointer does not exist  (hex 2401) exception may not be signaled when operand 2 contains an internal machine value that indicates one of these error conditions exists. If the corresponding exception is not signaled during this operation, operand 1 is set with an internal machine value that will cause either the same exception or a space addressing violation  (hex 0601) exception if a subsequent attempt is made to reference space data using the operand 1 pointer.

Authorization Required

Lock Enforcement

Exceptions

06 Addressing

08 Argument/Parameter

10 Damage Encountered

1C Machine-Dependent

20 Machine Support

22 Object Access

24 Pointer Specification

2E Resource Control Limit

36 Space Management

44 Protection Violation