上一页 1 ··· 6 7 8 9 10 11 12 13 14 15 下一页
摘要: ELF文件(Executable Linkable Format)是一种文件存储格式。Linux下的目标文件和可执行文件都按照该格式进行存储,有必要做个总结。 1. 链接举例 在介绍ELF文件之前,我们先看下,一个.c程序是如何变成可执行目标文件的。下面举个例子。 该程序由main.c和sum.c两 阅读全文
posted @ 2021-01-30 23:03 学习,积累,成长 阅读(890) 评论(0) 推荐(0) 编辑
摘要: 链接( Clinking)是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载(复制)到内存并执行。链接可以执行于编译时( compile time),也就是在源代码被翻译成机器代码时;也可以执行于加载时( load time),也就是在程序被加载器(lad er)加载到内存并执 阅读全文
posted @ 2021-01-29 17:02 学习,积累,成长 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 我们写程序的目的就是使它在任何情况下都可以稳定工作。一个运行的很快但是结果错误的程序并没有任何用处。在程序开发和优化的过程中,我们必须考虑代码使用的方式,以及影响它的关键因素。通常,我们必须在程序的简洁性与它的运行速度之间做出权衡。今天我们就来聊一聊如何优化程序的性能。 @ 1. 减小程序计算量 1 阅读全文
posted @ 2021-01-14 11:25 学习,积累,成长 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 在计算机系统模型中,CPU执行指令,而存储器系统为CPU存放指令和数据。实际上,存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。 如果你的程序需要的数据是存储在CPU寄存器中,那么在指令的执行期间,在0个周期内就能访问到它们。如果存储在高速缓存中,需要4~75个周期。如果存储在主存 阅读全文
posted @ 2021-01-01 16:21 学习,积累,成长 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 1. 什么是缓存 缓存又叫高速缓存,是计算机存储器中的一种,本质上和硬盘是一样的,都是用来存储数据和指令的 。它们最大的区别在于读取速度的不同。程序一般是放在内存中的,当CPU执行程序的时候,执行完一条指令需要从内存中读取下一条指令,读取内存中的指令要花费100000个时钟周期(缓存读取速度为200 阅读全文
posted @ 2021-01-01 16:21 学习,积累,成长 阅读(421) 评论(0) 推荐(1) 编辑
摘要: 这是CSAPP的第四个实验,这个实验比较有意思,也比较难。通过这个实验我们可以更加熟悉GDB的使用和机器代码的栈和参数传递机制。 @ 实验目的 本实验要求在两个有着不同安全漏洞的程序上实现五种攻击。通过完成本实验达到: 深入理解当程序没有对缓冲区溢出做足够防范时,攻击者可能会如何利用这些安全漏洞。 阅读全文
posted @ 2020-12-31 09:35 学习,积累,成长 阅读(964) 评论(0) 推荐(0) 编辑
摘要: 写程序最主要的目标就是使它在所有可能的情况下都正确工作。一个运行得很快但是给出错误结果的程序没有任何用处。程序员必须写出清晰简洁的代码,这样做不仅是为了自己能够看懂代码,也是为了在检査代码和今后需要修改代码时,其他人能够读懂和理解代码。另一方面,在很多情况下,让程序运行得快也是一个重要的考虑因素。本 阅读全文
posted @ 2020-12-31 09:33 学习,积累,成长 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 本次实验是CSAPP的第5个实验,这次实验主要是让我们熟悉如何优化程序,如何写出更具有效率的代码。通过这次实验,我们可以更好的理解计算机的工作原理,在以后编写代码时,具有能结合软硬件思考的能力。 @ 实验简介 本次实验主要处理优化内存密集型代码。图像处理提供了许多可以从优化中受益的功能示例。在本实验 阅读全文
posted @ 2020-12-31 09:33 学习,积累,成长 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 蠕虫病毒是一种常见的利用Unix系统中的缺点来进行攻击的病毒。缓冲区溢出一个常见的后果是:黑客利用函数调用过程中程序的返回地址,将存放这块地址的指针精准指向计算机中存放攻击代码的位置,造成程序异常中止。为了防止发生严重的后果,计算机会采用栈随机化,利用金丝雀值检查破坏栈,限制代码可执行区域等方法来尽 阅读全文
posted @ 2020-12-30 17:25 学习,积累,成长 阅读(463) 评论(0) 推荐(0) 编辑
摘要: uthash简介 由于C语言本身不存在哈希,但是当需要使用哈希表的时候自己构建哈希会异常复杂。因此,我们可以调用开源的第三方头文件,这只是一个头文件:uthash.h。我们需要做的就是将头文件复制到您的项目中,然后:#include "uthash.h"。由于uthash仅是头文件,因此没有可链接的 阅读全文
posted @ 2020-12-30 17:25 学习,积累,成长 阅读(9574) 评论(0) 推荐(2) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 15 下一页