深入理解计算机系统
有关计算机系统底层的一些结合实例的介绍
一位美女
这个作者很懒,什么都没留下…
展开
-
静态链接和动态链接——csapp总结
文章目录静态链接1.静态链接对象2.引入静态库这个概念之前的说明3.静态库4.实例5.静态库的缺点动态链接共享库1.简介2.两种共享方式:3.创建共享库并完成链接作为一名C/C++程序员,对于编译链接的过程要了然于胸。首先大概介绍一下,编译分为3步,首先对源文件进行预处理,这个过程主要是处理一些#号定义的命令或语句(如宏、#include、预编译指令#ifdef等),生成*.i文件;然后进行编译,这个过程主要是进行词法分析、语法分析和语义分析等,生成*.s的汇编文件;最后进行汇编,这个过程比较简单,就是将原创 2020-05-26 23:13:18 · 462 阅读 · 0 评论 -
可执行文件生成概述(预处理-编译-汇编-链接)
一、预处理(cpp)1.预处理命令gcc -E hello.c -o hello.i2. 处理源文件中以"#"开头的预编译指令,包括:删除"#define"并展开所定义的宏处理所有条件预编译指令,如"#if" ,"#ifdef" ,"#endif" 等插入头文件到"#include"处,可以递归方式进行处理删除所有的注释"//" 和"/* */"添加行号和文件名标识,以便编译时编译器产生调试用的行号信息保留所有#pragma编译指令(编译器需要用)3.经过预编译处理后,得到的是预.转载 2020-05-22 14:37:51 · 411 阅读 · 0 评论 -
switch分支语句
程序举例:#include <stdio.h> int main() { int i=0; int j=0; switch(i) { case 1: j+=1; break; case 2: j+=2; break; case 3: j+=3; break; case 4: j+=4;原创 2020-05-20 17:12:14 · 290 阅读 · 0 评论 -
深入理解计算机系统(链接)—— 重定位pc相对引用 重定位绝对引用 GNU READELF工具分析ELF文件
一.用GNU READELF工具分析ELF文件1. readelfreadelf命令是Linux下的分析ELF文件的命令,在分析ELF文件时非常方便比较常见的几条:linux> readelf -a test.o//显示全部信息linux> readelf -s test.o//查看.o文件符号表信息linux> readelf -S swap.o//查看具体“节”信息接下来给出一段代码,并对这段代码的符号表symTable进行具体分析:/*main.c*/void s原创 2020-05-20 15:28:18 · 892 阅读 · 0 评论 -
linux系统下alarm函数详解 信号处理函数signal
alarm()函数说明1.引用头文件:#include <unistd.h>;2.函数标准式:unsigned int alarm(unsigned int seconds);3.功能与作用:alarm()函数的主要功能是设置信号传送闹钟,即用来设置信号SIGALRM在经过参数seconds秒数后发送给目前的进程。如果未设置信号SIGALARM的处理函数,那么alarm()默认处理终止进程。4.函数返回值:如果在seconds秒内再次调用了alarm函数设置了新的闹钟,则后面定时器的设置原创 2020-05-18 20:03:46 · 1002 阅读 · 0 评论 -
深入理解计算机系统——链接
静态链接一组可重定位目标文件和命令行参数作为输入,生成一个可完全链接的可以加载和运行的可执行目标文件作为输出。构造可执行文件,连接器的任务:符号解析:1.将每个符号引用和符号定义联系起来2.编译器将定义的符号存放在一个符号表中。结构数组,.symtab节中。每个表项包含符号名、位置、长度等信息。重定位1.将各自的代码和数据段合并到一起2.将.o文件中符号的相对位置重定位到可执行文件中该符号相应的绝对存储位置3.更新所有的符号引用到其绝对位置目标文件目标文件有三种:可重定位目标.原创 2020-05-15 19:48:57 · 421 阅读 · 0 评论 -
Linux中fork函数详解&execve函数
一.fork知识入门1.fork函数基本作用一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。2.使用例举例:#include <unistd.h>原创 2020-05-11 20:03:42 · 957 阅读 · 0 评论 -
csapp:bomblab炸弹实验
文章目录phase_1:判断字符串是否相等(一)反汇编代码(二)汇编代码说明(三)分析phase_2:斐波那契数列(一)汇编代码分析(二)具体分析phase_3:switch选择分支(一)汇编代码分析(二)具体分析phase_4:递归函数(一)汇编代码分析phase_5(一)汇编代码分析(二)具体分析(三)结果(不唯一)phase_6:链表(一)汇编代码分析(二)结果secret_phase(一)...原创 2020-05-06 16:53:16 · 6446 阅读 · 2 评论 -
缓冲区溢出保护实例 strcpy
在关闭缓冲区溢出保护后进行编译:(Ubuntu 12.04 32位,gcc版本4.6.3) gcc -fno-stack-protector -z execstack -o pwd.out pwc.c在命令行输入 ./pwd.out运行,发现输入:11111111、12344444等字符串时会提示密码不正确,而在输入qqqqqqqq、 12355555时会提示密码正确。(1)分析这些现象产...原创 2020-04-22 23:51:22 · 1589 阅读 · 3 评论 -
深入理解计算机系统 第五章优化程序性能
https://www.cnblogs.com/clever-universe/p/8052696.html转载 2020-04-21 15:50:25 · 209 阅读 · 0 评论 -
gdb实例调试 有关函数调用和栈帧(深入理解计算机系统:控制)
调试代码#include "stdio.h"int sum(int x,int y) { int z=0; z=x+y; return z;} void main() { int a=3,b=4; int c=sum(a,b); printf("The sum is %d\n",c); }原创 2020-04-07 14:30:37 · 598 阅读 · 0 评论