Crafting Interpreters is great, I wish it had a companion book that covered:
- types and typing
- optimization passes
- object files, executables, libraries and linking
Then two of them would be sufficient for writing a compiler.> types and typing
This would be like asking for a book on designing grammar. It's just too disjoint of a field to have any kind of reasonable baseline, and it's drop dead easy to grok a basic one together. With those two things being equal, just like with grammar, the answer to this is any resource about implementing the language you're trying to ape.
> types and typing
Types and Programming Languages, Benjamin C Pierce
> object files, executables, libraries and linking
Linkers and Loaders, John R Levine
To your last point, "Linkers and Loaders" has no equal despite being a bit dated