1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-06-16 03:29:28 +00:00
millfork/docs/abi/generated-labels.md
2019-07-26 19:02:32 +02:00

75 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[< back to index](../doc_index.md)
# 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` 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