[CSAPP]Linux系统中的库

本文学习文章Linux库文件详解的笔记,并对其内容进行组织优化,新增Unix高级环境编程中对共享库的讨论与介绍。如对文章内容有任何问题欢迎留言讨论。由于微信订阅号的限制,发布后不能编辑内容,因此可以通过阅读原文来获取最新文章内容。如果文章内容存在错误,欢迎发送消息讨论。

基本概念

库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。

本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a,.lib)和动态库(共享库)(.so,.dll)。

Linux系统中静态库......

[CSAPP]程序的机器级表示

计算机执行机器代码,用字节序列编码低级的操作,包括处理数据、管理内存、读写存储设备上的数据,以及利用网络通信。编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列的截断生成机器代码。

在阅读本章的时候一定要复习一遍关于gcc的知识,参考GCC编译链接多文件

特别是以下一些介绍,我认为有必要贴在本章学习总结前面。

选项 -E

gcc -E test.c -o test.i 将test.c预处理输出test.i文件。

选项 -S

gcc -S test.i 将预处理输出文件test.i汇编成test.s文件。

选项 -c

gcc -c test.s 将汇编......

[CSAPP]信息的表示和处理

第二章信息的表示和处理主要研究三种最重要的数字表示:

1)无符号(unsigned)编码基于传统的二进制表示法,表示大于或者等于零的数

2)补码(two's-complement)编码是表示有符号数的最常见的方式,有符号整数就是可以为正或负的数字

3)浮点数(flsoating-point)编码是表示实数的科学计数法的以2位基数的版本。

浮点运算是不可结合的,例如在多数机器上表达式(3.14+le20)-le20求得的值会是0.0,而3.14+(le20-le20)求得的值是3.14.

整数运算和浮点运算会有不同的数学属性是因为他们处理数字表示有限性的方式不同:整数的表示虽然......

[CSAPP]计算机系统漫游

深入理解计算机系统这本书在豆瓣评分竟罕见的到了9.9分!

目前在读第三版,已读完前两章,补充在阅读过程中的笔记部分,如有任何疑问请评论指出。

本系列读书笔记不会记录全部内容,只是记录与实战相关、存在疑惑的部分,个人认为本书中的每一段话每一个字都很重要!

信息=位+上下文#include <stdio.h>

int main()

{

printf("Hello,world\n");

return 0;

}

在linux中可以通过hexdump -C hello.c的ASCII码表示: