From Compiler writing
See the Recommended reading section of each compiler phase for specific material.
- The definitive book on computer architecture is probably "Computer Architecture: A Quantitative Approach" by John Hennessy and David Patterson, ISBN 1558607242
- Software emulation of a processor or dynamic code translation is well covered by: Virtual Machines: Versatile Platforms for Systems and Processes by Jim Smith, Ravi Nair, ISBN 1558609105
You can download pdfs of most cpus from their respective manufacturer's web site.
Two books that provide a good broad introduction are:
- Modern Compiler Design by D. Grune, H. Bal, C. Jacobs, K. Langendoen, ISBN 0471976970
- Engineering a Compiler by Keith Cooper, Linda Torczon, ISBN 1558606998
The Dragon book is so famous it has its own Wikipedia entry. In its day it had the market to itself and the fact that the first half contained an extensive discussion on the theory of LR parsing was overlooked. The second edition was published 20 years later and now seems to be reasonably priced.
Books that teach via lots of code
- An interesting and readable talk through the source of a compiler: A Retargetable C. Compiler: Design and Implementation by David R. Hanson (Author), Christopher W. Fraser, ISBN 0805316701.
- For the functional programming folk: Modern Compiler Implementation in ML by Andrew W. Appel, ISBN 0521607647
Natural language processing:
- Probably the definite book: Speech and Language Processing: International Version: an Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition by Daniel Jurafsky, James H. Martin, ISBN 0135041961
- Foundations of Statistical Natural Language Processing by CD Manning, ISBN 0262133601
- Representation and Inference for Natural Language: A First Course in Computational Semantics by Patrick Blackburn, Johan Bos, ISBN 1575864967