I don't know if I'm crazy or what. I've been thinking about writing a book on how C works because I couldn't find any book like that when I worked on porting gcc/binutils. Althoug there are pieces of information out there on the web, I guess that it will be great to put all relevant information together for easy reference in one book. Right now I am a little suspicious. I don't know if C programers will bother to buy and read it.
Whatever, here are the list of topics from the top of my mind:
Preface
1. From Assembly to C
1.1 dark age: programming in assembly is painful
1.2 renaissance: C is for fun
2. C Compiler
2.1 chicken or the egg: C compiler implemented in C
2.2 C program translation
2.3 static vs dynamic linking
3. From C back to Assembly
3.1 dark side of debugging: only disassembled code
3.2 ABI (Application Binary Interface): function call frame, parameter passing, register allocation etc
4. ELF & binutils
4.1 layout of binary program in file
5. libc
5.1 minimal mylibc
5.2 glibc internals
6. ld.so
6.1 GOT, what GOT?
6.2 PLT
7. Bonus: Garbage collection
Can we make it work for C programs?