Да, хитро, однако же. Но алгоритм выделения памяти совсем неплохо работает. И разница между статическим и динамическим выделением в размере кода - всего какой-то килобайт.

А ещё я не нашёл в каком *.h-файле описан прототип функции _sdcc_heap_init()
Поэтому описал его сам:

Код:
void _sdcc_heap_init (void);
#ifndef SYSTEM_Cfg_Use_HEAP
#  define Platform__init()
#else
#  define Platform__init() _sdcc_heap_init()
#endif