![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链接装载与库
雪下寸林夕
追求,是一种态度
展开
-
objdump
objdump <option(s)> <file(s)> <file(s)>显示来自对象的信息。 <option(s)>必须提供下列至少一个标志: -a, --archive-headers ...原创 2020-01-02 21:12:19 · 172 阅读 · 0 评论 -
目标文件
目标文件是源代码编译后但未进行链接的中间文件,其与可执行文件的内容和结构很相似,所以目标文件可与可执行文件格式一起采用一种格式进行存储。 ELF格式举例 ELF文件类型 说明 实例 可重定位文件 这类文件包含了代码和数据,可以被用来链接成可执行文件或共享目标文件,静态链接库也可以归为这一类 Linux的.o Wind...原创 2019-12-31 17:35:37 · 191 阅读 · 1 评论 -
程序员的自我修养 -- 基础知识笔记之线程安全
线程安全实例分析(实例摘自《程序员的自我修改》)线程1 线程2 i=1 ++i i-- ++i;i--的一般实现方法:读取i到某个寄存器X; X++/X--; 将X的内容存储回i;其中使用X[1]与X[2]表示线程1和线程2中的寄存器X,其指令执行流程如下:执行分析 执行序号 执行指令 语句执行后变量值 线程 1...原创 2019-12-14 20:11:45 · 218 阅读 · 0 评论 -
程序员的自我修养 -- 基础知识笔记之多线程内部的三种模型
线程的并发执行是由多处理器或操作系统调度来实现的。用户使用的是用户态下的进程,其数量不一定在操作系统内核里对应同等数量的内核线程。一对一模型一对一模型是指:一个用户使用的线程就唯一对应一个内核使用的线程。反过来,一个内核里的线程在用户态不一定有对应的线程存在。优点:对于该模型,线程之间真正实现了并发,一个线程因为某原因阻塞时,其他线程执行不受影响。缺点:由于许多操作系统...原创 2019-12-21 18:25:14 · 257 阅读 · 0 评论 -
程序员的自我修养 -- 基础知识笔记之线程
线程轻量级进程(Lightweight Process, LWP)是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成。通常意义上,一个进程由一个到多个线程组成,各个线程之间共享程序的内存空间(包括代码段、数据段、堆等)以及一些进程级的资源(如打开文件和信号)。 ...原创 2019-12-14 19:35:35 · 310 阅读 · 0 评论 -
编译过程
编译器就是将高级语言翻译成机器语言的工具 词法分析:源代码程序通过扫描器的有限状态机算法将代码字符序列分割成一系列的记号。记号主要包含关键字、标识符、字面量和特殊字符。现成工具:lex语法分析:通过上下文无关语法对记号进行语法分析,产生语法树(是一棵以表达式为节点的树)。语法分析的同时,运算符的优先级及含义也被确定。现成工具yacc语义分析:在语法分析完成对表达式...原创 2019-12-30 21:11:49 · 186 阅读 · 0 评论 -
GCC编译过程分解
预编译(Prepressing)源代码文件和相关头文件被预编译器cpp预编译成一个 .i文件。(-E表示只进行预编译)预编译过程主要处理那些源代码文件中以“#”开始的预编译指令。展开宏,插入包含的文件,处理预编译指令,删除所有的注释。 gcc -E linxi.c -o linxi.i cpp linxi.c > linxi....原创 2019-12-30 19:34:30 · 296 阅读 · 2 评论 -
程序员的自我修养 -- 基础知识笔记(一)
硬件设备核心的三个部件:中央处理器CPU、内存和I/O控制芯片为什么会有北桥和南桥?因为速度不匹配;CPU和总线的速度不匹配,总线和外设(鼠标、键盘、磁盘)速度不匹配。为了协调 CPU、内存和高速的图形设备,专门设计了一个高速的北桥芯片,以便高速设备间能够高速地交换数据。由于北桥运行的速度非常高,所有的相对低速的设备如果全部直接连接在北桥上,北桥既需要处理高速设备,又要处理低速...原创 2019-12-12 14:03:33 · 285 阅读 · 0 评论