User`s guide

MACRO Compiler Directives
.JSB_ENTRY
Because no new context is set up by a null frame procedure, a side effect
is that there is no guarantee of completely accurate debugger information
about such procedures in response to SHOW CALLS and SHOW STACK
commands. For example, the line number in the called null procedure (to
which a JSB is done) may be reported as the line number in the calling
procedure from which the JSB is issued.
.JSB32_ENTRY
Declares the entry point of a JSB routine to the compiler. This directive does
not preserve any VAX register values (R2 through R12) unless the PRESERVE
parameter is specified. The routine itself may save and restore registers by
pushing them on the stack, but this will not preserve the upper 32 bits of the
registers. See also .JSB_ENTRY.
Caution
The .JSB32_ENTRY directive can be a great time-saver if you are sure
that you can use it. If you use .JSB32_ENTRY in a situation where the
upper 32 bits of a register are being used, it may cause very obscure and
difficult-to-track bugs by corrupting a 64-bit value that may be several
calling levels above the offending routine.
.JSB32_ENTRY should never be used in an AST routine, condition
handler, or any other code that can be executed asynchronously.
Format
.JSB32_ENTRY [input] [,output] [,scratch] [,preserve]
Parameters
input=<>
Register set that indicates those registers from which the routine receives input
values.
For the .JSB32_ENTRY directive, this register set is used only to document your
code.
output=<>
Register set that indicates those registers to which the routine assigns values
that are returned to the routine’s caller.
For the .JSB32_ENTRY directive, this register set is used only to document your
code.
scratch=<>
Register set that indicates registers that are used within the routine but which
should not be saved and restored at routine entry and exit. The caller of the
routine does not expect to receive output values nor does it expect the registers to
be preserved.
B–14 Specialized Directives