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#8
forBIT
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 ado-while
statement -
ds
– decimal right shift operation -
dv
– division and modulo operations -
el
– beginning of the "else" block in anif
statement -
ew
– end of awhile
statement -
fi
– end of anif
statement -
fe
– body of anfor
statement over a list -
fo
– certain optimizedfor
loops -
he
– beginning of the body of awhile
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 afor
loop doing bulk memory operations -
ms
– bulk memory operations -
no
– nonet to word extension caused by thenonet
operator -
od
– end of ado-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 anif
statement -
to
– end of afor-to
loop -
ur
– a copy due to loop unrolling -
wh
– beginning of awhile
statement -
xc
– automatically extracted subroutine of commonly repeating code