大數左右移運算

來源:互聯網
上載者:User
; 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:    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 16mpn_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 ],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    lea     esi,[esi+ebx*4]    lea     edi,[edi+ebx*4]    neg     ebx    xor     eax,eax.loop:    mov     ebp,[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-4 ]    mov     edi,[esp-8 ]    mov     ebx,[esp-12]    mov     ebp,[esp-16]    ret     16

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.