After dabbling in programming for the last 15-20 years and never imagining I'd be much of a programmer, something clicked around 9 months ago. I taught myself C and am now writing code many hours a day, and may soon start dipping my toe into the pool of Assembly.
I'm now to the point where great, detailed, thorough resources are becoming particularly useful as I'm able to better follow them. At the same time, they are becoming more difficult to find.
I'm curious if there are any low-level C programming resources that you consider to be must-haves. My interests have found me in things like... designing hash functions (and writing code that designs highly-optimized hash functions based specific key sets), writing my own TCP/IP stack and working with DPDK for faster packet processing and management, GPU programming, OS design, algorithm design, etc.
For an idea of what I'm looking for, some resources I've found most valuable and as frequent references have been the linux kernel code and documentation, TCP/IP Illustrated (particularly vol 1, first edition), and Agner Fog's work with Assembly.
Thanks for any ideas you might have.
The are the source for many of Agner's excellent materials.
The Software Optimization Reference Manual might be the best starting point: http://www.intel.com/content/dam/www/public/us/en/documents/...
Intel's IACA tool is also well worth exploring: https://software.intel.com/en-us/articles/intel-architecture...
It's relatively unknown, likely due to its terrible interface and poor documentation, but once you get past that, it's invaluable for understanding how the processor actually executes the instructions you provide it.