C is too complex, error-prone and bloated with undefined behaviour.
Code in assembly instead!
How should I divide my assembly files into modules? Should I use headers with macros and structure definitions (nasm supports both) or should I concatenate everything in one single file? I'll go experiment and see if the linker (GNU ld) is smart enough to DWIM when I use extern and global. by the way I'm coding a toy OS in assembly, no dynamic module loading, monolithic.