Millfork: a middle-level programming language targeting 6502- and Z80-based microcomputers and home consoles
This project is maintained by KarolS
Many Millfork constructs generate labels. Knowing what they mean can be useful when reading the generated assembly code.
Every generated label is of form .xx__11111
where 11111 is a sequential number and xx is the type:
ah – optimized addition of carry
an – logical conjunction short-circuiting
bc – array bounds checking (-fbounds-checking)
bo – boolean type conversions
c8 – constant #8 for BIT when immediate addressing is not available
co – greater-than comparison
cp – equality comparison for larger types
dd – labels renamed by code deduplication
de – decrement for larger types
do – beginning of a do-while statement
ds – decimal right shift operation
dv – division and modulo operations
el – beginning of the “else” block in an if statement
ew – end of a while statement
fi – end of an if statement
fe – body of an for statement over a list
fo – certain optimized for loops
he – beginning of the body of a while statement
in – increment for larger types
is – optimized addition of carry using undocumented instructions
lj – extra labels generated when converting invalid short jumps to long jumps
me – start of a for loop doing bulk memory operations
ms – bulk memory operations
no – nonet to word extension caused by the nonet operator
od – end of a do-while statement
or – logical alternative short-circuiting
sx – sign extension, from a smaller signed type to a larger type
th – beginning of the “then” block in an if statement
to – end of a for-to loop
ur – a copy due to loop unrolling
wh – beginning of a while statement
xc – automatically extracted subroutine of commonly repeating code