【目录】CSAPP的实验简介与解法总结(已包含Attack/Link/Architecture/Cache)

本文主要是介绍【目录】CSAPP的实验简介与解法总结(已包含Attack/Link/Architecture/Cache),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • Attack Lab(缓冲区溢出实验)对应书上Chap3
      • Link Lab(链接实验) 对应书上Chap7
      • Architecture Lab(体系结构实验)对应书上Chap4-5
      • Cache Lab(缓存实验)对应书上Chap6

Attack Lab(缓冲区溢出实验)对应书上Chap3

大意

待攻击的程序中使用了gets函数获取用户输入,你作为攻击者要输入一些内容来转移程序的控制权。

收获

理解了gets函数为什么被弃用,为什么新标准的输入函数强制要求编程者给出最大长度,提高了安全意识。知道了栈帧中都有什么以及如何传参。粗略了解“金丝雀”以及攻击有栈保护的代码的流程。

Attack Lab:Phase1~Phase5【缓冲区溢出实验】

Link Lab(链接实验) 对应书上Chap7

大意

每个阶段提供一个.o文件(可重定位目标文件),它是残缺的。请你用二进制编辑工具修改这个.o文件(或是重定位表、或是代码节、或是数据节),使得该.o文件与main.o文件链接后输出所要求的结果。

收获

链接就是符号解析+重定位。在本实验中,我了解了什么样的数据分配到什么节中(即符号解析),知道了重定位表在内存中的具体格式,以及会改写它(重定位)。

Link Lab:Phase 1 【输出学号】
Link Lab:Phase 2 【输出学号】
Link Lab:Phase 3 【输出学号 强弱符号】
Link Lab:Phase 4 【输出学号 switch跳转表】
Link Lab:Phase 5 【输出编码后的学号/补齐残缺的重定位表】

Architecture Lab(体系结构实验)对应书上Chap4-5

大意

用Y86-64汇编语言编写三个函数。补充硬件描述语言,使得Y86-64的解释器能够处理一条新指令。优化一个复制数组元素并统计大于零的元素的个数的汇编代码,使之每个元素平均消耗程序的周期数最少。

收获

学习了Makefile的一些知识。熟悉了Y86-64指令和条件码的使用,熟悉了完整的汇编程序的写法。会写Y86-64的指令的6阶段过程。进行了多次循环展开,学会了通过消除气泡来优化。

Architecture Lab:part A 【实现sum_list/rsum_list/copy_block/熟悉Y86-64指令】
Architecture Lab:Part B【顺序处理器SEQ的实现/添加iaddq指令/取址译码执行等六阶段】
Architecture Lab:Part C【实现流水线/添加iaddq指令/优化汇编代码以减少程序周期数】

下面是除了解题报告之外的一些记录:
Architecture Lab:预备知识1【Make与Makefile】
Architecture Lab:预备知识2【汇编call/leave/ret指令、CS:APP练习4.4】
Archtecture Lab:准备知识3【make时各种报错的解决方法】
顺序处理器SEQ的HCL代码分析

Cache Lab(缓存实验)对应书上Chap6

大意

用C语言实现一个cache的模拟器,测试时给出依次要加载的内存地址,你需要对hit次数和miss次数进行统计。
优化矩阵转置的C代码,使之的总miss数达到最少。

收获

知道了getopt,它可以使得C程序识别命令行选项。对矩阵转置程序进行了多种分块的尝试,使之miss总次数降到要求的值。

Cache Lab:Part A【模拟出使用LRU策略的高速缓存存储器组织结构】
Cache Lab:Part B(52.6/53)【矩阵转置的分块算法】

这篇关于【目录】CSAPP的实验简介与解法总结(已包含Attack/Link/Architecture/Cache)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/686817

相关文章

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

Spring Cache注解@Cacheable的九个属性详解

《SpringCache注解@Cacheable的九个属性详解》在@Cacheable注解的使用中,共有9个属性供我们来使用,这9个属性分别是:value、cacheNames、key、key... 目录1.value/cacheNames 属性2.key属性3.keyGeneratjavascriptor