美文网首页
程序的机器级表示

程序的机器级表示

作者: 老杜振熙 | 来源:发表于2020-10-08 13:09 被阅读0次

本文是对《深入理解计算机系统》第3章的一些总结。


  1. 什么是机器级程序
    机器级程序只是一系列的字节序列,由多条指令组成,每条指令只完成一个简单的操作。

  2. 机器级程序最重要的抽象
    机器级程序有两个最重要的抽象:①指令集架构(ISA),它定义了程序的格式和行为;②程序使用虚拟地址进行寻址,这使得内存看上去像是一个巨大的字节数组。

  3. 机器级程序可见而高层代码不可见的部分:

名称 用途
PC 指向下一条指令的地址
寄存器文件 16个64位寄存器,用以保存各类数据(比内存快得多)
条件码寄存器 实现流程控制(if-else, while等等)
向量寄存器 保存向量
  1. 程序栈和%rsp
    %rsp是寄存器文件中的一个寄存器,专门用于保存程序栈的栈顶位置。当进行函数调用的时候,先执行push操作,在栈顶空间中保存调用函数的下一条指令的地址;被调用函数返回后,执行pop操作,PC取出栈顶的指令地址,将栈恢复原状,随后调用函数根据PC的指示,执行下一条指令。

  2. 对齐
    数据的对齐,也就是其首地址需要满足一定的限制条件。具体而言,一个数据的首地址必须是该数据字节数的整数倍,我们将数据的字节数称为它的偏移要求。下图为一些例子:


    对齐1.png
    对齐2.png

    拿B为例,i为4字节,地址偏移为0,没有问题;c为1字节,地址偏移需要加上i的尺寸,为4字节,没有问题;d为1字节,偏移需要为1的整数倍即可,所以为5也没有问题;j为8字节,偏移需要为8的整数倍,所以需要在d和j之间添上一段空白内容,以实现字节对齐,所以j的地址偏移为8;
    对于例C而言,还需要在P3的尾部再添上一段空白内容,以实现2(K的最大值)的整数倍的字节偏移,所以P3的尺寸为10而不是9;
    对于E而言,又揭示了一个特性,结构体的偏移要求K也就是内部各个成员的偏移K的最大值,所以结构体P5的成员t的偏移为24,因为t的类型P2的成员的K的最大值为8,所以对t的偏移要求也是K的整数倍。

相关文章

  • 程序的机器级表示

    在计算机系统中,程序的运行离不开CPU、内存等之间的协作。而在CPU中, 其内部的寄存器起到了十分重要的作用,有...

  • 程序的机器级表示

    计算机系统使用了多种不同的抽象,利用简单的抽象模型来隐藏实现的细节。对于机器级编程来说,其中两种抽象尤为重要。第一...

  • 程序的机器级表示

    本文是对《深入理解计算机系统》第3章的一些总结。 什么是机器级程序机器级程序只是一系列的字节序列,由多条指令组成,...

  • 程序的机器级表示

    计算机执行机器代码,用字节序列编码低级的操作,包括处理数据、管理存储器、读写存储设备上的数据,以及利用网络通信。编...

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

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

  • 2,程序的机器级表示

    一, 编译使用命令 1, 汇编命令 2, intel 汇编指令 3, 反编译 命令 二, 汇编指令 1, mov...

  • 程序的机器级表示-跳转

    条件码 除了整数寄存器,cpu还维护着一组单个条件码的寄存器,他们用来描述最近算术和逻辑操作的属性。可以检测这些寄...

  • Charpter Three 程序的机器级表示

    3.2 程序编码3.2.1 机器级表示抽象计算机系统使用了多种不同形式的抽象, 利用更简单的抽象模型来隐藏实现的细...

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

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

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

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

网友评论

      本文标题:程序的机器级表示

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