VMS Help  —  MACRO  /ALPHA  Current Location Counter
    The current location counter is a counter kept by an assembler to
    determine the address assigned to an instruction or constant that
    is being assembled. The symbol for the current location counter,
    the period (.),  represents the address of the current byte.
    MACRO-64 sets the current location counter to 0 at the beginning
    of the assembly and at the beginning of each new program section.

    Every MACRO-64 source statement that allocates memory in the
    object module increments the value of the current location
    counter by the number of bytes allocated. For example, the
    directive, .LONG 0 increments the current location counter by 4.
    However, with the exception of the special form described later
    in this section, a direct assignment statement does not increase
    the current location counter because no memory is allocated.

    The current location counter can be explicitly set by a special
    form of the direct assignment statement. The location counter can
    be either incremented or decremented. This method of setting the
    location counter is often useful when defining data structures.
    Data-storage areas should not be reserved by explicitly setting
    the location counter; use the .BLKx directives.
    FORMAT

    .=expression

 expression

    An expression that does not contain any undefined or external
    symbols.

    In a relocatable psect, the expression must be relocatable; that
    is, the expression must be relative to an address in the current
    psect. It also may be relative to the current location counter.
    For example:

    . = .+40        ; Moves location counter forward

    When a psect that you defined in the current module is continued,
    the current location counter is set to the last value of the
    current location counter in that psect.

    In a psect with the EXE and NOMIX attributes:

    o  The location counter cannot be changed.

    o  If optimization is enabled, the location counter represents
       the location before optimization.

    In a psect with either the EXE or NOMIX (or both) attributes:

    o  The location counter can be changed.

    o  If you store an initial data or instruction value in memory
       with a data directive such as .BYTE, .WORD, .LONG, or .QUAD
       or with an instruction statement, you can replace that initial
       value with a different initial value later in the assembly
       by assigning the appropriate address value to the current
       location counter and entering another data directive or
       instruction statement. However, the new value must be the
       same size and must start at exactly the same address as the
       value it replaces.
Close Help