深入理解操作系统:程序机器级表示---读书笔记(一)

数据格式

  由于是从16位体系结构扩展至32位的,因此Intel用术语“字(word)”表示16位数据类型。因此,称32位数据为“双字”,称64位数据为“4字”。C语言与x86-64的基本数据类型对应关系如下表所示。

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

  一个x86-64的中央处理器单元(CPU)包一组16个共有64位值的通用寄存器。他们的名字都以%r开头。

操作数

  大多数指令有一个或多个操作数(operand),指示出执行一个操作中要使用的源数据值,以及放置结果的目的位置。操作数被分为三种类型:

  • 第一种类型是立即数(immediate),用来表示常数值。在ATT格式的汇编代码中,立即数的书写方式是‘$’后面跟一个用标准C语言表示法表示的数字,例如,$-577或$0x1F。
  • 第二种类型是寄存器(register),它表示某个寄存器的内容。例如,%rax。
  • 第三种类型是内存引用,它会根据计算出来的地址(通常称为有效地址)访问某个内存位置。
posted @ 2019-02-26 21:38  墨白白  阅读(178)  评论(0)    收藏  举报