寄存器,有十六个
介绍通用寄存器,
一共八个,分别是EAX、EBX、ECX、EDX、ESP、EBP、EDI、ESI。
其中,EAX—EDX这四个寄存器又可称为数据寄存器,你除了直接访问外,还可分别对其高十六位和低十六位它们的低十六位就是把它们前边儿的E去掉,即EAX的低十六位就是AX。而且它们的低十六位又可以分别进行八位访问,即AX还可分为AH(高八位)AL(低八位)。其它三个寄存器请自行推断
这四个寄存器,主要就是用来暂时存放计算过程中所用的操作数、结果或其它信息.
而ESP、EBP、EDI、ESI这四个呢,就只能用字来访问,它们的主要用途就是在存储器寻址时,提供偏移地址,它们可以称为指针或变址寄存器,从386以后,所有的寄存器都可以用来存储内存地址。
ESP称为堆栈指针寄存,ESP的内容在任何时候都指向当前的栈顶,它永远指向最后一个压入栈的数据.
EBP,它称为基址指针寄存器,EBP可作为堆栈区中的一个基地址以便访问堆栈中的信息
ESI(源变址寄存器)和EDI(目的变址寄存器),用来确定数据段中某一存储单元的地址。这两个变址寄存器有自动增量和自动减量的功能,可以很方便地用于变址
专用寄存器
专用寄存器,有两个,一个是EIP,一个是FLAGS,
EIP指令指针寄存器,在程序运行的过程中,它始终指向下一条指令的首地址,计算机就是用EIP寄存器来控制指令序列的执行流程的,
那些跳转指令,就是通过修改EIP的值来达到相应的目的的.
FLAGS,标志寄存器,又称PSW(program status word),即程序状态寄存器
段寄存器
这部分寄存器一共六个,分别是CS代码段,DS数据段,ES附加段,SS堆栈段,FS以及GS这两个还是附加段。
其实现在到了Win32环境下,段寄存器以经不如DOS时代那样重要了
#################################################################
15:52 2010-5-29
mmx
主要是提高整数运算的并行(8位,16位和32位(16位最好)),
typedef union __declspec(intrin_type) __declspec(align(8)) __m64
{
unsigned __int64 m64_u64;
float m64_f32[2];
__int8 m64_i8[8];
__int16 m64_i16[4];
__int32 m64_i32[2];
__int64 m64_i64;
unsigned __int8 m64_u8[8];
unsigned __int16 m64_u16[4];
unsigned __int32 m64_u32[2];
} __m64;
sse
提高32位float运算的并行能力
typedef struct __declspec(intrin_type) __declspec(align(16)) __m128 {
float m128_f32[4];
} __m128;
指令 Intrinsic 功能