操作数指示符

操作数指示符

指令通常由操作码(例如movb(传送字节))与操作数组成的

  • 操作数指示出一个操作中要使用的源数据的,以及放置结果的目的位置
  • 源数据值可以以常数的形式给出,或是从寄存器或是内存之中读出。

操作符分为三类:

  1. 立即数
  2. 寄存器
  3. 内存引用

立即数:

  • 书写方法是‘$’之后+c语言可以表示的整数
  • 立即数表示一个常数

寄存器:

  • 表示某个寄存器的内容
  • 在以下用ra来表示任意寄存器a
  • 用R[ra]表示其代表的数值
  • 将一个个寄存器想象成一串数组R,R[ra] 就代表具体 寄存器储存具体的值

内存引用

  • 将内存想像成为一个连续的数组,当我们知道地址add时,便可以访问具体的值Mb[add],b代表从add开始的b个字节(因为内存是一个空间)
  • 内存寻址可以分为计算地址与寻找地址对应的值两部分

注意,ra是寄存器,代表其储存的值
而(ra)是引用,寄存器储存 的值是地址,其值是地址指向的值

操作数格式

格式 操作数值
$Imm Imm
ra R[ra]
Imm M[Imm]
(ra) M[R[ra]]
Imm(rb,ri,s) M[Imm+R[rb]+R[ri]*s]

s主要有 1 2 4 8由其数据类型决定

你可能感兴趣的:(csapp,服务器,算法)