You both should try "Compiler Construction: Principles and Practice" [0]. Theory is interleaved with substantial examples and exercises. You create an entire compiler for a tiny language called TINY (hah.) You write it in C and generate code for a portable virtual machine -- the book also goes into detail on the VM, with source code.
Lastly, the book's appendix has guidance for writing a compiler for a subset of the C language.
I didn't really read any books on that topic. But did lots of general research about compiler stages. I also posted a few links some comments up, that helped a lot.
For for it! Start small and increase. But seeing a program in your own language output something makes it all worth it :)