1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-10-31 14:04:58 +00:00
millfork/docs/abi/generated-labels.md

75 lines
1.9 KiB
Markdown
Raw Normal View History

2019-07-15 12:21:50 +00:00
[< back to index](../doc_index.md)
2018-04-02 22:21:26 +00:00
2018-01-04 00:15:04 +00:00
# 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
2018-01-08 00:18:04 +00:00
* `bc` array bounds checking (`-fbounds-checking`)
* `bo` boolean type conversions
2018-01-04 00:15:04 +00:00
* `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
2018-01-04 00:15:04 +00:00
* `de` decrement for larger types
* `do` beginning of a `do-while` statement
* `ds` decimal right shift operation
2019-06-05 16:36:39 +00:00
* `dv` division and modulo operations
2018-01-04 00:15:04 +00:00
* `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
2019-06-25 16:23:31 +00:00
* `fo` certain optimized `for` loops
2018-01-04 00:15:04 +00:00
* `he` beginning of the body of a `while` statement
* `in` increment for larger types
* `is` optimized addition of carry using undocumented instructions
2018-06-10 22:04:24 +00:00
* `lj` extra labels generated when converting invalid short jumps to long jumps
2018-07-02 12:59:21 +00:00
* `me` start of a `for` loop doing bulk memory operations
2018-08-07 15:37:09 +00:00
* `ms` bulk memory operations
2018-03-09 23:08:13 +00:00
* `no` nonet to word extension caused by the `nonet` operator
2018-01-04 00:15:04 +00:00
* `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
2018-01-20 21:32:57 +00:00
* `to` end of a `for-to` loop
2018-02-27 12:26:56 +00:00
* `ur` a copy due to loop unrolling
2018-01-04 00:15:04 +00:00
* `wh` beginning of a `while` statement
2018-08-06 17:29:09 +00:00
* `xc` automatically extracted subroutine of commonly repeating code
2018-01-04 00:15:04 +00:00