- https://github.com/snowcra5h/windows-api-function-cheatsheets : by snowcra5h
- https://github.com/snowcra5h/branch-tables-and-jump-tables : by snowcra5h
- https://github.com/snowcra5h/x86 : by snowcra5h
CMU Systems Programming course uses two books: "Computer Systems: A Programmer's Perspective" and "The C Programming Language". Course schedule, exams, and lecture materials available on course website. Resources on C programming include Stanford engineering lectures, GCC's implementation of C99 features, man pages, networking guides, system calls, and more..
- https://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/013409266X : CMU Systems Programming
- https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ : K&R Enough said
- http://www.cs.cmu.edu/afs/cs/academic/class/15213-m17/www/schedule.html# : course schedule, midterm, finals, pdf's for lectures*
- http://csapp.cs.cmu.edu/3e/home.html : root page for book
- http://csapp.cs.cmu.edu/3e/labs.html : all of the labs (you do these exercises at the end of each section in the book)
Some of the extraordinary labs here are the bomb lab which teaches reverse engineering. The attack lab is the buffer overflow lab that will guide you through modern x86 exploitation. Including ROP, there's also a Heap Lab and Shell lab where you write a linux shell, a Proxy Lab, which has you write a multi-threaded network program in C (you learn a ton in all of these), and many others.
- Lecture Videos : (very helpful) TA resitation videos, and instructor lectures.
- http://csapp.cs.cmu.edu/3e/simguide.pdf : Y86-64 Simulator Documentation
- http://csapp.cs.cmu.edu/3e/docs/dsa.pdf : Virtual Memory
- RTFMan Pages : Always go to the man pages first!
- SSL/TSL
- Beej's Networking C : Amazing
- Linux Syscalls
- Stanford Engineering C Lectures : Best C Resource online
- Stanford EDU C assignments
- Status of C99 features in GCC
- C VA_ARGS
- Algorithms for: DFT DCT DST FFT
- Apple Source Browser : Lots of nice code implementations for things like strchr strcasecmp sprintf
- GNU C Programming Tutorial
- Steve Holmes C Programming
- C Programming class notes
- C tutorials
- An Introduction to C
- FAQ
- Declarations
- Event-Driven
- Microsoft Learn - C Docs
- CASIO® Personal Computer PB-2000C Introduction to the C programming language :: In case you want to target a late 80s pocket computer that, in the Japanese production (the AI-1000), ran LISP 2 instead of C as its system language (both use HD61700d processor).
- UNIX System Calls and Subroutines
- Bug-Free C Code
- The C Book
- C elements of style
- The Art of Unix Programming
- Modern C
- Advanced Tutorials
- https://graphics.stanford.edu/~seander/bithacks.html : god tier bit hacks
- https://cheatography.com/jsondhof/cheat-sheets/bit-hacks/ : bit hacking cheat sheet
- inline assembly
- OS-Development Build Your Own OS
- Build a Computer from Nand Gates to OS
- The Art of Assembly : amazing
- Introduction to 64-Bit Assembly Language Programming for Linux and OS X by Ray Seyfarth
- What Every Programmer Should Know About Memory by Ulrich Drepper
- Modern x64 Assembly by What's a Creel?
- Performance Programming: x64 Caches by What's a Creel?
- A Comprehensive Guide To Debugging Optimized x64 Code by Jorge
- Introduction to x64 Assembly by Chris Lomont
- Challenges of Debugging Optimized x64 code by Microsoft
- Microsoft x64 Software Conventions This will be your eternal companion and enforcer as you work on Windows.
- The Netwide Assembler manual Contains all the information needed about programming with NASM syntax.
- Intel 64 and IA-32 Architectures Software Developer Manuals Contain all the technical information regarding the CPU architecture, instructions, and timings.
- x86 and amd64 instructions reference an excellent list of all the instructions available on the x86-64 instruction set. Be warned. Not everything maps 1:1 in either NASM/MASM syntax!
- Intel Intrinsics Guide is an excellent guide to the intrinsic functions available for Intel CPUs.
- Instruction Tables Reference instruction timings for various CPU generations.
- https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html : root page for the intel docs
- Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4 : combined volumes for the docs
- https://devblogs.microsoft.com/oldnewthing/author/oldnewthing Raymond Chen
- https://scorpiosoftware.net Pavel Yosifovich