美文网首页
第三章《程序的机器级表示》(一)

第三章《程序的机器级表示》(一)

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

机器级编程的重要抽象

对于机器级编程来说,两种抽象尤为重要:

  • ISA,全称为指令集体系结构指令集架构,它定义了处理器状态、指令的格式以及每条指令对状态的影响,用于屏蔽了硬件处理指令的复杂行为,将程序的每条行为描述为顺序执行
  • 内存虚拟化,它将多个硬件存储器和操作系统软件结合起来,将对外提供的内存模型抽象为一个很大的字节数组

重要的处理器状态

  • 程序计数器:给出将要执行的下一条指令在内存中的地址
  • 整数寄存器文件,包含16个命名的位置,分别存储64位的值,这些寄存器可以存储地址或整数数据
  • 条件寄存器,保存着最近执行的算术或逻辑指令的状态信息
  • 一组向量寄存器,可以存放一个或多个整数或浮点数的值

机器级代码的特点

我们可以通过C语言在内存中声明和分配各种数据类型的对象,但是机器代码只是很简单的将内存看做是一个很大的、按照字节寻址的数组。汇编代码不区分有符号或无符号整数,不区分各种类型的指针,甚至不区分指针和整数

程序内存

程序的内存包括:

  • 程序的可执行机器代码
  • 操作系统需要的一些信息
  • 用来管理过程调用和返回的运行时栈
  • 用户分配的内存块

数据格式

Intel用术语表示16位的数据类型,因此也将32位数称为双字,64位数称为四字

对于x86-64系统而言,C语言的各种数据类型的信息如下:

C声明 Intel数据类型 汇编代码后缀 字节大小
char 字节 b 1
short w 2
int 双字 l 4
long 四字 q 8
char* 四字 q 8
float 单精度 s 4
double 双精度 1 8

注意:大多数GCC生成的汇编代码指令都有一个字符的后缀,表明操作数的大小,例如:

  • movb: 传送字节
  • mobw: 传送字
  • movl: 传送双字
  • movq: 传送四字

相关文章

  • CSAPP复习(1月24日)

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

  • 程序的机器级表示

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

  • 程序的机器级表示

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

  • 程序的机器级表示

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

  • 程序的机器级表示

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

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

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

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

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

  • 第三章《程序的机器级表示》(一)

    机器级编程的重要抽象 对于机器级编程来说,两种抽象尤为重要: ISA,全称为指令集体系结构或指令集架构,它定义了处...

  • 2018-11-04 CSAPP 第三章读书笔记part1

    第三章 程序的机器级表示 对于严谨的程序员来说,能够阅读和理解汇编代码仍是一项很重要的技能。 阅读编译器产生的汇编...

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

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

网友评论

      本文标题:第三章《程序的机器级表示》(一)

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