G
George Neuner
AFAIHS, C has the smallest bootstrap. The only things absolutely
*required* are to define the stack limits, set the stack (and maybe
frame) pointer and (if necessary) jump to the application entry point.
Total required code - less than 10 assembly instructions.
Optionally, if the application requires dynamic allocation[*] then you
must define the location and limit of the heap and initialize the
allocator. Less than 10 additional instructions.
That's it ... your C application is up and running.
George
[*] Some of C's standard library functions normally use dynamic
allocation, but those troublesome functions can be avoided or replaced
with versions that use static buffers. The "added-value" of a
commercial embedded development system (vs, e.g., trying to use a free
compiler) is that the commercial runtime library typically will
include static buffered versions of functions that normally allocate
and also will provide a selection of dynamic allocators optimized for
different purposes.
*required* are to define the stack limits, set the stack (and maybe
frame) pointer and (if necessary) jump to the application entry point.
Total required code - less than 10 assembly instructions.
Optionally, if the application requires dynamic allocation[*] then you
must define the location and limit of the heap and initialize the
allocator. Less than 10 additional instructions.
That's it ... your C application is up and running.
George
[*] Some of C's standard library functions normally use dynamic
allocation, but those troublesome functions can be avoided or replaced
with versions that use static buffers. The "added-value" of a
commercial embedded development system (vs, e.g., trying to use a free
compiler) is that the commercial runtime library typically will
include static buffered versions of functions that normally allocate
and also will provide a selection of dynamic allocators optimized for
different purposes.