User`s guide

Recommended and Required Source Changes
3.2 Instruction Stream
3.2.1 Data Embedded in the Instruction Stream
The compiler detects data embedded in the instruction stream, and reports it as
an error.
Data in the instruction stream often takes the form of a JSB instruction followed
by a .LONG. This construct allows VAX MACRO code to implicitly pass a
parameter to a JSB routine which locates the data by using the return address on
the stack. Another occasional use of data in the code stream is to make the data
contiguous with the code in memory, so that it can be relocated as a unit.
Recommended Change
For implicit JSB parameters, pass the parameter value in a register. For values
larger than a longword, put the data in another program section (psect) and
explicitly pass its address.
Because static data must reside in a separate data psect, any code that tries to
relocate code and data together must be rewritten.
3.2.2 Run-Time Code Generation
The compiler detects branches to stack locations and to static data areas and
flags them as errors.
Recommended Change
You must either remove or modify code that builds instructions for later
execution, branches to stack locations, or branches to static data areas. If the
code is absolutely necessary, you should conditionalize it for OpenVMS VAX, and
generate corresponding, suitable OpenVMS Alpha or OpenVMS I64 code.
3.2.3 Dependencies on Instruction Size
Code that computes branch offsets based on instruction lengths, for example,
must be changed.
Recommended Change
Use a label and standard branch or a CASE instruction for computed GOTOs.
3.2.4 Incomplete Instructions
Some CASE instructions in OpenVMS VAX code are not followed by offset tables,
but instead depend on psect placement by the linker to complete the instruction.
The compiler will flag the incomplete instruction as an error.
Recommended Change
Complete the instruction in the module or build a table of addresses in a data
psect, and replace the CASE instruction with code to select a destination address
from the table and branch.
3.2.5 Untranslatable VAX Instructions
Because the compiler cannot translate the following VAX instructions, it flags
them as errors:
LDPCTX and SVPCTX
XFC
ESCD, ESCE, and ESCF
BUGx
3–4 Recommended and Required Source Changes