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

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

作者: ShawnIsACoder | 来源:发表于2018-11-11 15:47 被阅读0次

操作数

大多数指令至少会有一个操作数,指出执行一个操作中要使用的数据源值以及放置结果的位置,各种不同的操作数的可能性分为3种:

  • 立即数:用于表示常数值
  • 寄存器:用于表示某个寄存器的内容
  • 内存引用:根据计算出来的地址访问某个内存位置

加载有效地址

leaq实际上是movq指令的变形,它的指令形式是从内存读取数据到寄存器,但是实际上它根本没有引用内存。它的第一个操作数看上去是一个内存引用,但是该指令并不是从指定的位置读取数据,而是将有效地址写入到目的操作数

leaq指令能够执行加法和有限形式的乘法

一元操作

image.png

一元操作只有一个操作数,既是又是目的,这个操作数可以是一个寄存器也可以是一个内存地址

二元操作

image.png

二元操作的第二个操作符,既是又是目的,其中第一个操作数可以是立即数寄存器或是内存位置,第二个操作数可以是寄存器或是内存地址

移位操作

image.png

第一项是移位量,第二项是要移位的数,两个左移指令SALSHA的效果都是一样的,将右边填上0。右移指令不同,分为SHR逻辑移位(填上0)和SAR算数移位(填上符号位

条件码

CPU维护了一组单个位的条件码寄存器,用于描述最近的算术或逻辑操作的属性,常用的条件码如下:

  • CF:进位标志,最近的操作使最高位产生了进位,可用来检查无符号数的溢出。

  • ZF:零标志,最近的操作得到的结果为0

  • SF:符号标志,最近的操作得到的结果为负数

  • OF:溢出标志,最近的操作导致一个补码溢出

相关文章

  • CSAPP复习(1月24日)

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

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

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

  • 程序的机器级表示

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

  • 程序的机器级表示

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

  • 程序的机器级表示

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

  • 程序的机器级表示

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

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

    操作数 大多数指令至少会有一个操作数,指出执行一个操作中要使用的数据源值以及放置结果的位置,各种不同的操作数的可能...

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

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

  • 程序的机器级表示 -- 访问信息(二)

    《深入理解计算机系统(第三版)》阅读随笔 数据传送指令 简单数据传送指令 movb:传送字节:movw:传送字;m...

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

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

网友评论

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

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