This simple program hides an enormous amount of complexity ranging from
the automatic inclusion of the standard libraries, to linking in startup code,
to interacting with the world through the shell. In the embedded world, much
of that complexity is visible to the programmer and hence it is necessary to
understand quite a bit more about the execution environment for even the
simplest program (and “hello world” is not a simple program).