You copied the Doc URL to your clipboard.

Bare machine integer C

If you are writing a program in C that does not use the library and is to run without any environment initialization, you must:

  • Re-implement __rt_raise() if you are using the heap.

  • Not define main(), to avoid linking in the library initialization code.

  • Write an assembly language veneer that establishes the register state required to run C. This veneer must branch to the entry function in your application.

  • Provide your own RW/ZI initialization code.

  • Ensure that your initialization veneer is executed by, for example, placing it in your reset handler.

  • Build your application using --fpu=none.

When you have met these requirements, link your application normally. The linker uses the appropriate C library variant to find any required compiler functions that are implicitly called.

Many library facilities require __user_libspace for static data. Even without the initialization code activated by having a main() function, __user_libspace is created automatically and uses 96 bytes in the ZI segment.