文档介绍:第 3 章 8086指令系统
本章讲述:
基本数据类型
IA-32的指令格式
IA-32指令的操作数寻址方式
IA-32的通用指令
基本数据类型
本节介绍IA-32 结构定义的数据类型。
IA-32结构的基本数据类型是字节、字、双字、四字和双四字,如图3-1所示。
一个字节是8位,一个字是两个字节(16位),双字是4字节(32位),四字是8字节(64位),双四字是16字节(128位)。
四字是在Intel 80486处理器中引入IA-32 结构的,双四字是在具有SSE扩展的Pentium Ⅲ处理器中引入的。
图3-2显示了基本数据类型作为内存中的操作数引用时的字节顺序。
低字节(位0至位7)占用内存中的最低地址,该地址也是此操作数的地址。
字、双字、四字和双四字的对齐
字、双字和四字在内存中并不需要对齐至自然边界。(字、双字和四字的自然边界是偶数编号的地址,对于双字和四字来说,地址要分别能被4和8除尽。)
然而,为了改进程序的性能,数据结构(特别是堆栈)只要可能就应该在自然边界上对齐。因为对于不对齐的存储访问,处理器要求做两次存储访问操作;而对于对齐的访问,只要进行一次存储访问操作。
数字数据类型
虽然字节、字和双字是IA-32 结构的基本数据类型,但某些指令对这些数据类型的附加解释允许在数字数据类型(带符号的或无符号整数和浮点数)上操作。这些数字数据类型如图3-3所示。
1. 整数
IA-32结构定义两种类型整数:无符号整数和符号整数。无符号整数是原始二进制值,范围从0到所选择的操作数尺寸能编码的最大正数;符号整数是2的补码二进制值,能用于表示正的和负的整数值。
某些整数指令(例如:ADD、SUB、PADDB 和PSUBB 指令)可在无符号整数或符号整数上操作。而一些整数指令(例如:IMUL、MUL、IDIV、DIV、FIADD 和FISUB)只能在一种整数类型上操作。