汇编学习

寄存器,有十六个
介绍通用寄存器,
一共八个,分别是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 功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值