程序员的自我修养 读书体会

就如标题一样,真本书可以说很棒,基本上覆盖了一个程序从编译-链接-装载-到消亡的所有过程。表达清晰完整,也非常的浅显易懂。

   作者本身的理念和我的兴趣爱好和所追求的技术路线不谋而合:软件技术本身可以说是日新月异,但是都脱离不开操作系统的运筹帷幄,我们不能把程序本身生命周期当作是黑盒,亦或者是操作系统原理,编译原理书籍上的概念文字,而是要真正转化为程序员可以理解的代码。可以说这本书从这一点上做到了,也可以说增强了我们的DEBUG能力。

   本书对我最大的帮助就是解答了操作系统内存管理的原因。链接部分的本质。装载的原理。光这3点,足矣让我受益匪浅。

   同样本书也有几点不足,比如有时候介绍某一概念往往会将WINDOWS与LINUX的实现分别介绍。本来,作者的想法是打通两者的联系,更好的理解机制本身,但是在阅读中往往会搞乱,起不到应有的效果。

   在内存布局这一块,涉及到一些C/C++的反汇编实例和优化的约定,点到为止,这一方面的书籍我推荐C++反汇编与逆向分析。两者结合看或有融汇贯通之感。

   当然还有一些错别字的问题。我想在后面的几版应该会得到更正。

时间: 2024-11-05 22:01:35

程序员的自我修养 读书体会的相关文章

C++程序员的自我修养–读书笔记

 1:注意不要反回指向栈内存的指针或引用,因为在函数返回时改内存已经被销毁了 2:C/C++没有办法知道指针所指的内存容量大小 当数组作为参数传递时,数组将退化成相同类型的指针 不要指望要指针参数去申请动态内存,因为函数会为产生一个临时变量指向参数的内存,当函数内分配内存时,将内存的地址赋给了临时参数,而没有给实参赋值,所有实参没有发生任何变化,应该修改的是指针所指的内容,而不是修改指针的指向,所有可以用指向指针的指针 3:重载和内联机制既可用于全局函数也可用于类的成员函数,const和vi

程序员的自我修养-读书笔记(2)

3 目标文件里有什么 3.1 目标文件格式 1)可执行文件:PE(Windows)  和 ELF(linux), 都是COFF格式的变种.目标文件(.obj, .o)采用一样的格式. 2)动态链接库:(windows的.dll,linux的.so) 3) 静态链接库:(.lib, .a) 3.2 目标文件是什么样的 1)分成数据段和代码段的好处:1.代码段设为只读,防止误写.2.提高缓存命中率(数据缓存和指令缓存).3.多个进程时,只有一份代码段节约内存. 3.3 挖掘 .o 1) objdum

程序员的自我修养-读书笔记(1)

1. 温故而知新 1.2万变不离其中 三个核心部件:CPU,内存,I/O控制芯片 北桥芯片(PCI 桥):协调CPU,内存,高速图形设备.PCI总线之后又有AGP, PCI express 南桥芯片(ISA 桥):协调USB,键盘,鼠标 1.4 不要让CPU打盹 分时系统:W95, mac os x之前的系统 多任务:unix,linux,win NT 2) Windows中,图形硬件抽象成了GDI, 多媒体设备抽象为DirectX, 磁盘为文件 3)硬盘的基本存储单位为扇区,比如,一个硬盘2个

读书笔记:程序员的自我修养-----第一章(综述)

题前:30--45天读完,一周至少3篇读书笔记.不能坚持,不再联系,不再找你. 一. hello world 程序引出的问题,看40天后,再回来看看自己的答案,提升多少. Q1:程序为什么要被编译器编译之后才可以运行?   A1 : 系统执行的机器语言,即二进制文件,程序是文本文件需要编译之后,由链接器链接需要的基本库生成二进制文件. Q2: 编译器在把C语言程序转换成可以执行的机器码的过程中作了什么,怎么做的?   A2: 预处理,汇编器生成汇编文件,编译器生成目标文件,链接器链接生成可执行文

【读书笔记】程序员的自我修养总结(六)

[读书笔记]程序员的自我修养总结(六) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:这是程序员的自我修养一书的读书总结,随着阅读的推进,逐步增加内容. 本文主要介绍可执行文件的装载与进程 程序与进程的区别 程序是静态的,指的是一些预先编译好的指令和数据集合的一个文件:而进程实际上就是运行着的程序,是动态的. 虚拟地址空间 程序运行起来后将拥有独立的虚拟地址空间 virtual address space,其大小由计算机的硬件平台决定,具体地说是

【读书笔记】程序员的自我修养总结(二)

程序员的自我修养总结(二) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:这是程序员的自我修养一书的读书总结,随着阅读的推进,逐步增加内容. 由源文件到可执行文件 分为四个步骤: 预处理 处理源代码中以#开始的预编译指令,进行宏定义展开,处理所有条件预编译指令,将被包含文件插入到预编译指令的位置,删除所有注释,添加行号及文件标识,保留#pragma编译器指令,因为编译器需用到. 编译 进行一系列词法分析,语法分析,语义分析及优化后生成汇编代码文件

读书笔记:程序员的自我修养-----第三章(目标文件)

一 .目标文件格式 1. PE(Portabel Executable) 2. ELF (Executable Linkable Format) : 可重定位.可执行.共享目标文件.核心转储文件 思考: 弱符号和弱引用   VS   回调函数 __attrbute__ ((weakref)) void foo( ); int main() { if( foo ) foo(); } 可以被用户的强符号覆盖: 读书笔记:程序员的自我修养-----第三章(目标文件)

读书笔记第三周《程序员的自我修养》

第三周读书笔记 <程序员的自我修养> ??计划对这本书是精读,这周读了3,4章. 第三章 目标文件里有什么 ?? 首先介绍了目标文件的格式,Windows下是pe-coff,linux下是elf,他们都源于coff,这与操作系统的发展历史有关,而且不仅可执行文件按这种格式存储,动态链接库(.dll),静态链接库(.lib)都是如此存储. ?? 在目标文件中,信息以段的形式存储(微机原理讲过),总体被分为指令与数据两部分.代码编译后的机器指令放在代码段(.text),全局变量与局部静态变量放在数

《程序员的自我修养》读书笔记 -- 第三章

第三章 目标文件里有什么 3.1 目标文件的格式 1.目标文件就是源代码编译后还未进行链接的中间文件.因为目标文件与可执行文件的内容和结构很相似,所以一般跟可执行文件的存储形式相同,Linux下统称为ELF可执行文件.动态链接库与动态链接库也使用可执行文件格式存储. 2.ELF文件标准里面把ELF文件归为4类: l  可重定位文件(这类文件包含代码和数据,可被用来链接成可执行文件,静态链接库属于此类.如linux下的.o文件和windows下的.obj ) l  可执行文件(这类文件包含可直接执