美文网首页
3.10 在机器级程序中将控制与数据结合起来

3.10 在机器级程序中将控制与数据结合起来

作者: ShutLove | 来源:发表于2018-04-20 11:58 被阅读0次

3.10.1 理解指针

  1. 指针是C语言的一个核心特色,它提供了一种统一方式,对不同数据结构中的元素产生引用。
  2. 每个指针都对应一个类型,void *类型代表通用指针,它通过强制或隐式类型转换变成一个有类型的指针。
  3. 每个指针都有一个值,NULL(0)值表示指针没有指向任何地方。
  4. 指针用&操作符创建。
  5. *操作符用于间接引用指针。
  6. 数组与指针紧密联系。
  7. 将指针从一种类型强制转换为另一种类型,只改变它的类型而不改变它的值,效果只是改变指针运算的伸缩。
  8. 指针也可以指向函数。

3.10.2 应用:使用GDB调试器

  1. 程序在执行过程中遇到一个断点时,会停下来,并将控制权返回给用户。
  2. GDB提供了许多用来调试的命令。

3.10.3 内存越界引用和缓存区溢出

  1. C对数组没有越界检查,并且局部变量和一些状态信息都存储在栈中,那么对数组的越界写操作会破坏栈信息,能导致非常严重的程序错误。
  2. 一种特别常见的状态破坏称为缓存区溢出。比如越界导致覆盖了过程调用返回地址。
  3. 缓存区溢出的一个更加致命的使用就是使程序执行了它不该执行的函数,这是一个最常见的通过计算机网络攻击计算机的方法。

3.10.4 对抗缓冲区溢出攻击

  1. 栈随机化。思想是使栈的位置在每次程序运行时都有变化。方法是在程序开始运行时,在栈上分配一段0-n字节的空间,程序不使用这段空间。
  2. 栈破坏检测。思想是在栈帧中任何局部缓冲区和栈状态之间存储一个特殊的金丝雀值,也称为哨兵值。
  3. 限制可执行代码区域。一种方法是限制哪些内存区域能够存放可执行代码。通过读、写、执行控制位标识,操作系统和硬件层都有已实现技术。

3.10.5 支持变长栈帧
使用%rbp作为帧指针,也称为基指针。

相关文章

  • 3.10 在机器级程序中将控制与数据结合起来

    3.10.1 理解指针 指针是C语言的一个核心特色,它提供了一种统一方式,对不同数据结构中的元素产生引用。 每个指...

  • 第三章:程序的机器级表示

    程序的机器级表示 程序编码 机器级代码 数据格式 字word表示16位数据类型,32位数为双字double wor...

  • Python数据挖掘与机器学习,快速掌握聚类算法和关联分析

    摘要:前文数据挖掘与机器学习技术入门实战与大家分享了分类算法,在本文中将为大家介绍聚类算法和关联分析问题。分类算法...

  • 程序的机器级表示 -- 控制(一)

    《深入理解计算机系统(第三版)》阅读随笔 在 C 语言中,可以使用条件语句、循环语句和分支语句来控制程序的执行流程...

  • 程序的机器级表示 -- 控制(二)

    《深入理解计算机系统(第三版)》阅读随笔 跳转指令 在正常情况下,计算机指令会按照出现顺序一步一步地执行,使用跳转...

  • 深入计算机系统---程序的机器级表示

    一、汇编语言与机器语言简单介绍 简单讲 二、程序编码以及数据格式 程序编码,数据格式 我们在写 C 程序时,处理器...

  • CSAPP复习(1月24日)

    第三章 程序的机器级表示 1 有关汇编 用高级语言编写的程序可以在很多不同的机器上编译和执行,而汇编代码则是与特...

  • 程序的机器级表示-基本操作

    程序编码 机器级代码 理解机器级代码有2种抽象需要理解。 指令集架构:来定义机器级程序的格式以及行为。定义了处理器...

  • 高性能计算性能评测

    高性能计算集群的性能评测大致分为机器级、算法级和程序级的性能评测。 机器级机器级的性能评测主要包括CPU和存储器的...

  • 功能部件

    输入设备:向计算机输入原始数据和规定的程序,并将信息转换成机器能识别的形式(编码) 控制器:统一指挥和控制程序的运...

网友评论

      本文标题:3.10 在机器级程序中将控制与数据结合起来

      本文链接:https://www.haomeiwen.com/subject/iietyxtx.html