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`)
|
|
|
|
|
|
2019-07-26 17:02:32 +00:00
|
|
|
|
* `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
|
|
|
|
|
|
2018-08-07 23:53:47 +00:00
|
|
|
|
* `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
|
|
|
|
|
|
2018-12-19 17:13:38 +00:00
|
|
|
|
* `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
|
|
|
|
|