Warning
You're browsing the old v2.x documentation. This version is no longer maintained. Click here to go the v3.x documentation.
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
proc [2019/06/06 08:38] – [Recursion] neils | proc [2020/08/07 08:52] (current) – Add note about naming thraka | ||
---|---|---|---|
Line 10: | Line 10: | ||
The '' | The '' | ||
+ | |||
+ | The name of the procedure and the name of a parameter **can' | ||
Example: | Example: | ||
Line 115: | Line 117: | ||
When the compiler detects direct recursion, it generates code to save local variables and procedure parameters on the stack and restore them when the procedure returns. | When the compiler detects direct recursion, it generates code to save local variables and procedure parameters on the stack and restore them when the procedure returns. | ||
+ | |||
+ | ==== Prevent stack overflow ==== | ||
**Be careful with recursion**. The C64's stack is very small, it's very easy to provoke a stack overflow. To estimate how big stack space you'll need, you can use this formula: | **Be careful with recursion**. The C64's stack is very small, it's very easy to provoke a stack overflow. To estimate how big stack space you'll need, you can use this formula: | ||
Line 121: | Line 125: | ||
Always leave some stack space for normal operations as well (8-16 bytes in general, but this can be more depending on the context). | Always leave some stack space for normal operations as well (8-16 bytes in general, but this can be more depending on the context). | ||
+ | |||
+ | **Tip**: a good practice to prevent stack overflow is to move as many local variables to the global scope as possible. |