Pseudo variables are readable in all cases, and in some special cases also writable.
*
Reading this pseudo variable will return the program counter at the start of the current input line.
Assignment to this variable is possible when
.FEATURE pc_assignment
is used. Note: You should not use
assignments to *
, use
.ORG
instead.
.CPU
Reading this pseudo variable will give a constant integer value that
tells which CPU is currently enabled. It can also tell which instruction
set the CPU is able to translate. The value read from the pseudo variable
should be further examined by using one of the constants defined by the
"cpu" macro package (see
.MACPACK
).
It may be used to replace the .IFPxx pseudo instructions or to construct even more complex expressions.
Example:
.macpack cpu
.if (.cpu .bitand CPU_ISET_65816)
phx
phy
.else
txa
pha
tya
pha
.endif
.PARAMCOUNT
This builtin pseudo variable is only available in macros. It is replaced by the actual number of parameters that were given in the macro invocation.
Example:
.macro foo arg1, arg2, arg3
.if .paramcount <> 3
.error "Too few parameters for macro foo"
.endif
...
.endmacro
See section Macros.
.TIME
Reading this pseudo variable will give a constant integer value that represents the current time in POSIX standard (as seconds since the Epoch).
It may be used to encode the time of translation somewhere in the created code.
Example:
.dword .time ; Place time here
.VERSION
Reading this pseudo variable will give the assembler version according to the following formula:
VER_MAJOR*$100 + VER_MINOR*$10 + VER_PATCH
It may be used to encode the assembler version or check the assembler for special features not available with older versions.
Example:
Version 2.11.1 of the assembler will return $2B1 as numerical constant when
reading the pseudo variable .VERSION
.