Hi,
Thanks for this feedback.
Naming convention is documented.
Parameter passing is implicitly documented: default is by value in a procedure/function specific variable. VAR parameters are passed as pointers (1 or 2 bytes depending on $POINTERS), CONST parameters are passed by value for simple types, by a pointer for records or arrays. VAR boolean are not passed as pointers (meaningless) but copied before and after call (documented).
For PIC18, current bank may be unknown at procedure entry and exit.
For other processors, current bank is always 0 upon procedure entry and exit. The optimizer needs this. Nevertheless if an asm block is inserted in a procedure, the optimizer will assume that the current bank is unknown at the end of the block.
PMP does not analyze an asm block, it is passed as is to the assembler.
You may search the manual for procedure definition with "external" keyword.
Memory allocation for variables should always be done by PMP, or the used memory should be $RESERVED before any PMP variable allocation so that PMP cannot use it.
I will upgrade the documentation.
Regards, PMP team leader
|