1.9 KiB
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