Guide to generated label names
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#8forBITwhen 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 ado-whilestatement -
ds– decimal right shift operation -
dv– division and modulo operations -
el– beginning of the "else" block in anifstatement -
ew– end of awhilestatement -
fi– end of anifstatement -
fe– body of anforstatement over a list -
fo– certain optimizedforloops -
he– beginning of the body of awhilestatement -
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 aforloop doing bulk memory operations -
ms– bulk memory operations -
no– nonet to word extension caused by thenonetoperator -
od– end of ado-whilestatement -
or– logical alternative short-circuiting -
sx– sign extension, from a smaller signed type to a larger type -
th– beginning of the "then" block in anifstatement -
to– end of afor-toloop -
ur– a copy due to loop unrolling -
wh– beginning of awhilestatement -
xc– automatically extracted subroutine of commonly repeating code