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

程序的机器级表示

作者: JayZJU | 来源:发表于2017-03-04 22:05 被阅读0次

  在计算机系统中,程序的运行离不开CPU、内存等之间的协作。而在CPU中, 其内部的寄存器起到了十分重要的作用,有通用寄存器和特殊功能寄存器之分。通用寄存器有AX、BX、CX、DX(这些是用来保存数据用的),以及ESI、EDI(拷贝数据使用)等;特殊功能寄存器例如EBP(指向程序栈栈底)、ESP(指向程序栈栈顶)等。现在就以如下的例子说明程序在计算机中的机器级表示过程。

图1 C语言程序

图1是C语言描述的,简单的将两个数求和,打印并返回和。在机器级别,这段简单的程序会被翻译成如下汇编代码。

图2 C程汇编代码 图3 虚拟地址空间

从图3 可知,当程序之间形成函数调用的时候,会在内存中形成函数栈帧,函数栈帧向下生长,运行时堆则是向上增长的。内存的地址是从下往上依次增大的。

在程序执行过程中,调用函数时,首先会使EBP(保存之前函数调用的栈底地址)入栈,ESP自动减去4个字节,EBP指向ESP(对应demo汇编代码1,2)。然后,会为新函数栈开辟栈帧内存空间,一般为32个字节。接着进行一列CPU寄存器与函数栈内存之间的函数调用,进行add函数调用之前的数据准备工作(对应demo汇编代码3--9)。当调用add函数时,会在当前函数栈中保存返回地址,在开辟add的新函数栈。

在add汇编代码中,同会把调用add的函数栈底EBP入栈,之后进行一系列的地址操作后,返回demo函数,最后打印结果。

相关文章

  • 程序的机器级表示

    在计算机系统中,程序的运行离不开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/llwjgttx.html