Standard CALL linkage conventions

The prime purpose of a call or a function invocation is to transfer control to a target routine and optionally pass/receive data to/from the called routine. The transfer of control and communication must be as efficient as possible. Language Environment assumes that:

  1. Caller's arguments match the callee's parameters.
  2. The only supported way to pass arguments on the ILC call is indirectly, either by reference or by value.
  3. Pointers longer than 31 bits are NOT supported.
  4. Pointers are assumed to be 31-bit capable.

This topic describes the standard Language Environment protocols for passing arguments to external routines. These protocols do not apply to internal routines or to compiled code calling its own library routine. Each HLL is free to decide the method for transferring control as well as passing arguments between internal routines.