mirror of
https://github.com/irmen/prog8.git
synced 2024-11-26 11:49:22 +00:00
doc
This commit is contained in:
parent
8efa89165c
commit
bbf621a8c4
@ -342,16 +342,14 @@ See also :ref:`pointervars_programming`
|
|||||||
|
|
||||||
**LSB/MSB split word arrays:**
|
**LSB/MSB split word arrays:**
|
||||||
For (u)word arrays, you can make the compiler layout the array in memory as two separate arrays,
|
For (u)word arrays, you can make the compiler layout the array in memory as two separate arrays,
|
||||||
one with the LSBs and one with the MSBs of the word values. This is more efficient when storing
|
one with the LSBs and one with the MSBs of the word values. This makes it more efficient to access
|
||||||
and reading words from the array (the index can be used twice).
|
values from the array (smaller and faster code). It also doubles the maximum size of the array from 128 words to 256 words!
|
||||||
Add the ``@split`` tag to the variable declaration to do this.
|
The ``@split`` tag should be added to the variable declaration to do this.
|
||||||
In the assembly code, the array will be generated as two byte arrays namely ``name_lsb`` and ``name_msb``.
|
In the assembly code, the array will then be generated as two byte arrays namely ``name_lsb`` and ``name_msb``.
|
||||||
Note that the maximum length of a split word array is 256! (regular word arrays are limited to 128 elements).
|
|
||||||
|
|
||||||
.. caution::
|
.. caution::
|
||||||
Not all array operations are supported yet on "split word arrays".
|
Not all array operations are supported yet on "split word arrays".
|
||||||
The compiler may give an unpleasant error or crash when you hit such a case in your code.
|
If you get an error message, simply revert to a regular word array and please report the issue,
|
||||||
If this happens simply revert to a regular word array and please report the issue,
|
|
||||||
so that more support can be added in the future where it is needed.
|
so that more support can be added in the future where it is needed.
|
||||||
|
|
||||||
|
|
||||||
|
@ -344,7 +344,7 @@ Tag Effect
|
|||||||
@requirezp force the variable into Zero page. If ZP is full, compilation will fail.
|
@requirezp force the variable into Zero page. If ZP is full, compilation will fail.
|
||||||
@nozp force the variable to normal system ram, never place it into zeropage.
|
@nozp force the variable to normal system ram, never place it into zeropage.
|
||||||
@shared means the variable is shared with some assembly code and that it cannot be optimized away if not used elsewhere.
|
@shared means the variable is shared with some assembly code and that it cannot be optimized away if not used elsewhere.
|
||||||
@split (only valid on (u)word arrays) Makes the array to be placed in memory as 2 separate byte arrays; one with the LSBs one with the MSBs of the word values. May improve performance.
|
@split (only valid on (u)word arrays) Makes the array to be placed in memory as 2 separate byte arrays; one with the LSBs one with the MSBs of the word values. Usually improves performance and code size.
|
||||||
========== ======
|
========== ======
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
TODO
|
TODO
|
||||||
====
|
====
|
||||||
|
|
||||||
docs: stress more that the @split for word arrays can provide significant code efficiency over normal linear word array
|
|
||||||
|
|
||||||
optimizer bug, see "optimizing inlined functions must reference proper scopes" unittest (skipped for now)
|
optimizer bug, see "optimizing inlined functions must reference proper scopes" unittest (skipped for now)
|
||||||
causes compiler error for virtual: just calling txt.cls() gives compile error undefined symbol clear_screen
|
causes compiler error for virtual: just calling txt.cls() gives compile error undefined symbol clear_screen
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user