This standard defines requirements for a native user mode procedure to operate correctly in a multilanguage and multithreaded environment on Windows NT for Alpha Systems, including:
These properties include the contents of key registers, the format and contents of various data structures, and the actions that procedures must perform under various circumstances.
This standard also defines properties of the run-time environment that must apply at various points during program execution. These properties vary in scope and applicability. Some properties apply at all points throughout the execution of user mode code and must, therefore, be held constant at all times. Examples of such properties include those defined for the stack pointer and various properties of the call chain navigation mechanism. Other properties apply only at certain points, such as call conventions that apply only at the point of the transfer of control to another procedure.
Furthermore, some properties are optional depending on circumstances. For example, compilers are not obligated to follow the argument list conventions when a procedure and all of its callers are in the same module, have been analyzed by an interprocedural analyzer, or have private interfaces (such as language support routines).
Note The specifications in this document are presented in an as if definition. This simply means that all conforming code must behave as if the specifications have been met. In particular, this calling standard is designed such that additional link-time information can be utilized to optimize or even remove instructions in critical code paths and as such achieve higher performance levels.
In addition, in many cases significant performance gains can be realized by selective use of non-standard calls when the safety of such calls is known. Compiler writers are encouraged to make optimal use of such optimizations as appropriate while always ensuring that procedures outside the compilation unit can proceed as if the letter of the standard were met.
The conventions specified in this standard are intended to exploit fully the architectural and performance advantages of the Alpha hardware architecture, and are designed to provide a leadership execution environment for applications and languages on Windows NT for Alpha Systems. Some of these conventions are visible to the high-level language programmer, and therefore may require source-level changes in high-level language programs when moving them from other environments.
To achieve source-level compatibility and portability between the Windows NT for Alpha Systems environment and various other environments, users should not depend on the properties of this architecture except indirectly through high-level language facilities that are portable across architectures.
By definition, many of the conventions described in this standard differ from other software implementation architectures. Therefore, programs that depend on properties of this architecture may not be portable to other architectures.