AT&T汇编学习笔记之数据类型

来源:互联网 发布:windows 8的记事本 编辑:程序博客网 时间:2024/05/16 04:01
数据操作:
    movw $0xffb1 , %dx
    movzx  source , destination  
    source可以是8,16位 destination可以是16位或32位

    movzx %cl , %ebx

    movsx 扩展带符号整数。
    .quad可以定义一个或者多个带符号整数值。每个整数占8个字节。
    

    多媒体扩展整数
    mmx整数  8字节64位  1 2 4 打包
    movq把数据传送到MMX寄存器,但必须决定当前应用程序将使用打包整数中的哪一种。
    movq  source , destination   dest可以是MMX SSE 64位内存位置。

    values1:
        .int 1 , -1
    values2:
        .byte 0x10 ,      ,0x01
    movq values1 , %mm0
    movq values2 , %mm1

    SSE流化SIMD扩展
    8个128位的XMM寄存器。 xmm0-7  2 4 8 16
    movdqa source , destination 。

    values1:
        .int 1 , -1 , 0 , 1234
    values2:
        .quad 1 , -1
    movdqa values1 , %xmm0
    movdqa values2 , %xmm1

    BCD整数  8位  0-9
    加载bcd值到FPU寄存器。必须使用80位打包BCD格式在内存中创建值。值被传送给FPU寄存器
    之后,就被自动转换为扩展双精度浮点型。
    fbld source  优先使用FPU0  ST0
    
    
    浮点数
    single 31,30-23,22-0  符号  指数  有效数字
    double 63,62-52,51-0  
    
    fld source    FPU寄存器
    fld1将+1.0压入FPU堆栈
    FLDL2T    把10的对数(底2)压入堆栈
    FLDL2E    e
    FLDPI    pi
    FLDLG2    2的对数(底10)
    FLDLN2    2的对数(底e)
    FLDZ    +0.0压入FPU堆栈

    查看st0-7
    每次进入浮点栈后都后进先出,依次往后叠,最后进入的占用st0。
    
    SSE浮点    128位    
    MOVAPS    把4个对准的打包单精度值传送到XMM寄存器或者内存。
    MOVUPS    不对准的
    MOVSS     一个单精度传送到XMM或者内存低四字
    MOVLPS    把两个单精度值传送到内存或者寄存器低四字
    MOVHPS    高四字
    MOVHLPS    两个单精度值从高四字传送到低四字
    MOVLHPS    低到高
    
    xmmX  0-7依次用。

    MOVAPD    把两个对准的双精度传送到XMM寄存器或者内存
    MOVUPD
    MOVSD    把一个双精度传送到内存或者寄存器低四字
    MOVHPD    一个双精度值传送到寄存器或者内存高四字
    MOVLPD
    
    转换指令
    CVTDQ2PD    双字型整数到打包双精度FP (XMM)
    CVTDQ2PS    单精度            (XMM)
    CVTPD2DQ    双精度FP到打包双字型整数 (XMM)
    CVTPD2PI                (MMX)
    CVTPD2PS    双精度FP到单精度FP    (XMM)
    CVTPI2PD
    CVTPI2PS
    CVTPS2DQ
    CVTPS2PD
    CVTPS2PI                (MMX)
    CVTTPD2PI    双精度FP到打包双字型整数 (MMX 截断)
    CVTTPD2DQ                (XMM 截断)
    CVTTPS2DQ    单精度FP到打包双字型整数 (XMM 截断
    CVTTPS2PI    单精度FP到双字型整数(MMX 截断)
    
    
    
       
0 0
原创粉丝点击