I must say all the book suggestions are really great.
Except for P&H. As mentioned in comment he now recommends CS:APP over it and I would do too.
Also, for compilers I would suggest C compiler design [1]. It provides both implementation and theory instead of just theory which the dragon book does.
> Except for P&H. As mentioned in comment he now recommends CS:APP
P&H is “Patterson & Hennesy” (Computer Organization and Design), right? I gotta say, having read both, I think they cover different ground and I wouldn’t say that once replaces the other. P&H is more hardware with a nod to software and CS:APP is more software with a nod to hardware; you won’t get a really deep understanding of instruction pipelining from CS:APP, nor will you really get great coverage of linking and loading from P&H. If you’re going to do it, read both.
Also, for compilers I would suggest C compiler design [1]. It provides both implementation and theory instead of just theory which the dragon book does.
[1] https://holub.com/compiler/