You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Since FlexPRET has so little memory, it becomes especially important to keep the SDK's memory footprint low.
An immediate suggestion for optimization is __ie_jmp_buf and __ee_jmp_buf. Each takes up 1216B for four hardware threads; double that for eight hardware threads. It is large because it needs to save all registers so they can be restored later.
It is uncommon to use them all at the same time (and some application may not even use them, ever). Also, it does not make sense for a hardware thread to set up an interrupt on expire and exception on expire at the same time. Therefore, it might be a good idea to dynamically allocate these struct arrays when we want to use them. (As opposed to statically allocating them, which they are as of now.) In that case, the __ie_jmp_buf and __ee_jmp_buf arrays could maybe instead contain pointers to the jump buffer or NULL.
To find other candidates for optimization, a suggestion is to run nm <compiled program> --size-sort. This gives an overview of all symbols within the executable - and most importantly, their sizes.
The text was updated successfully, but these errors were encountered:
Since FlexPRET has so little memory, it becomes especially important to keep the SDK's memory footprint low.
An immediate suggestion for optimization is
__ie_jmp_buf
and__ee_jmp_buf
. Each takes up 1216B for four hardware threads; double that for eight hardware threads. It is large because it needs to save all registers so they can be restored later.It is uncommon to use them all at the same time (and some application may not even use them, ever). Also, it does not make sense for a hardware thread to set up an interrupt on expire and exception on expire at the same time. Therefore, it might be a good idea to dynamically allocate these struct arrays when we want to use them. (As opposed to statically allocating them, which they are as of now.) In that case, the
__ie_jmp_buf
and__ee_jmp_buf
arrays could maybe instead contain pointers to the jump buffer or NULL.To find other candidates for optimization, a suggestion is to run
nm <compiled program> --size-sort
. This gives an overview of all symbols within the executable - and most importantly, their sizes.The text was updated successfully, but these errors were encountered: