希望有一本可以讲解 C 的各个方面 从内存和寄存器 角度是如何处理的书。
从内存到寄存器,那么其实你要知道的不仅仅是汇编。还有计算机系统结构,操作系统的基本知识。
有本书叫《深入理解计算机系统》(我觉得这个翻译很土鳖),英文名是Computer System, A Programmer's Perspective.
就像它的英文名所说的那样,从一个程序员的角度解释计算机系统。这本书从底层的硬件,CPU架构,硬件缓存,指令编码,到汇编语言,操作系统,性能优化以及上层应用。覆盖范围很广,而且每个层次的知识点都讲得很细致,配合一些课后练习(我当时看时就做了不少),对于你理解计算机系统的原理非常有帮助。
各个部分内容相对独立,对于不感兴趣的可以跳过,我当时就直接跳过了第四章(我没记错的话)讲CPU的。
这本书毕竟不是编程书,没法提高你的C编程能力,但对你理解C语言本身,C语言与操作系统,汇编语言的关系非常有帮助。
《编译原理》
希望可以帮到你
《深入理解程序设计 使用Linux汇编语言》
这里面讲了些和C语言有关的东西,貌似有些章节告诉了和C语言的联系,比如for循环在汇编下面是什么样子的之类的。
这种书到目前为止,还没有见过。不过你可以换个角度:
- C语言中是如何嵌入汇编语言的,以及他们是如何交互的
- 找本汇编语言的书看,学习汇编语言,从中体会C语言,可以学习MASM
- 自己探索,写成博客,比如,你可以把你感兴趣的C语言代码片段反编译成汇编代码,从中找到你想要的答案
最后,希望你不要寄希望于一本书就把你所有的疑惑都解释清楚,不如一点点来,掌握住探索问题的方法。如果没有此类书,你就停止不前了吗?
那你找的书其实是C语言加上编译原理
不过专门讲C编译器是如何实现编译原理的书应该很少
你可以参考类似于《编译原理》及"自己写一个编译器"(大致名字是这样)这种书
可以看一下《Linux C/C++编程一站式学习》
http://songjinshan.com/akabook/zh/
自己找到一本书《征服C指针》还不错,而且由于是日本人写的,所以翻译的比较通顺。
我只见过讲解汇编的书,学玩汇编就好了,可以看下c语言编译的汇编代码
根据你的描述,估计只有一本书:《编译原理——C语言实现》