Assembler directives control object construction instead of requesting processor operations. ivss recognizes dot-prefixed statements for sections, data, symbols, constants, and termination:
.global answer .equ initial, 42 .section my_data answer: .word initial .skip 4 .end
.global exports the symbol, .equ defines an absolute value, and .section chooses the output section. .word emits a four-byte value; .skip appends four zero bytes. .end stops source processing. These directives do not become separate instructions for the emulator to execute.
The implementation dispatches each recognized directive to a handler. Data directives modify the current section's buffer. Symbol directives update symbol metadata, and .equ expressions are saved for evaluation after source processing.
This timing permits an expression to use labels discovered later in the input. It does not provide arbitrary compile-time programming: expressions use the assembler's supported arithmetic and symbol evaluation rules. Constant expressions and data allocation explain these two parts separately.
Source: asembler.c.