加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数左右移运算

发布时间:2020-12-14 04:08:00 所属栏目:大数据 来源:网络整理
导读:; MP_BIT = 30; MP_NAIL = 32 - MP_BIT; MP_MASK = 3FFFFFFFh ;base 30bit 28~30; mp_limb_t; mpn_rshift (mp_ptr rp,mp_srcptr up,mp_size_t n,unsigned int cnt) ; assert (n = 1); ; assert (cnt = 1); ; assert (cnt GMP_LIMB_BITS);align 16mpn_rshift:
; MP_BIT      = 30
; MP_NAIL     = 32 - MP_BIT
; MP_MASK     = 3FFFFFFFh ;base 30bit  28~30


; mp_limb_t
; mpn_rshift (mp_ptr rp,mp_srcptr up,mp_size_t n,unsigned int cnt)
  ; assert (n >= 1);
  ; assert (cnt >= 1);
  ; assert (cnt < GMP_LIMB_BITS);

align 16
mpn_rshift:
    label   .cp  dword at esp+4
    label   .ap  dword at esp+8
    label   .n   dword at esp+12
    label   .cnt dword at esp+16
    label   .tnc dword at esp-4

    mov     [esp-4 ],esi
    mov     [esp-8 ],edi
    mov     [esp-12],ebx
    mov     [esp-16],ebp
    
    mov     edi,[.cp]
    mov     esi,[.ap]
    mov     ebx,[.n]
    mov     ecx,[.cnt]          ;4
    mov	    [.tnc],MP_BIT       ;30
    sub	    [.tnc],ecx          ;tnc=26
    xor     eax,eax
.loop:
    mov     ebp,[esi+ebx*4-4]
    mov     ecx,[.cnt]
    mov     edx,ebp
    shr     edx,cl
    and     edx,MP_MASK
    or      eax,edx
    mov     [edi+ebx*4-4],eax
    mov     eax,ebp
    mov     ecx,[.tnc]
    shl     eax,cl
    and     eax,MP_MASK
    sub     ebx,1
    jnz     .loop

    shr     eax,cl
    mov     esi,[esp-4 ]
    mov     edi,[esp-8 ]
    mov     ebx,[esp-12]
    mov     ebp,[esp-16]
    ret     16


?

;---------------------------
;  ==|== ==...== == == |====
;           HSB          LSB
;---------------------------
align 16
mpn_lshift:
    label   .cp  dword at esp+4
    label   .ap  dword at esp+8
    label   .n   dword at esp+12
    label   .cnt dword at esp+16
    label   .tnc dword at esp-4

    mov     [esp-4 ],ecx          ;tnc=26
    lea     esi,[esi+ebx*4]
    lea     edi,[edi+ebx*4]
    neg     ebx
    xor     eax,[esi+ebx*4]
    mov     ecx,[.cnt]          ;4
    mov     edx,ebp
    shl     edx,cl
    or      edx,eax
    and     edx,MP_MASK
    mov     eax,ebp
    mov     [edi+ebx*4],edx
    mov     ecx,[.tnc]
    shr     eax,cl
    add     ebx,1
    jnz     .loop

    mov     esi,[esp-16]
    ret     16

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读