首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

RtlFillMemory,RtlMoveMemory求解解决思路

2012-04-04 
RtlFillMemory,RtlMoveMemory求解RtlMoveMemory是怎样保证当dst与source有重叠时,仍然可以复制或移动?RtlF

RtlFillMemory,RtlMoveMemory求解
RtlMoveMemory是怎样保证当dst与source有重叠时,仍然可以复制或移动?
RtlFillMemory的作用是什么?

[解决办法]
如果source<dst从高地址往低地址复制
如果source>dst从低地址往高地址复制
RtlFillMemory就是memset
[解决办法]

Assembly code
        mov     esi,EmmSource        mov     edi,EmmDestination        mov     ecx,EmmLength        cld                               //注意这        cmp     esi,edi                 ; Special case if Source > Destination        jbe     overlapnooverlap:        mov     edx,ecx        and     edx,MEMORY_ALIGNMENT_MASK        shr     ecx,MEMORY_ALIGNMENT_LOG2        rep     movsdoverlap:        je      movedone        mov     eax,edi        sub     eax,esi        cmp     ecx,eax        jbe     nooverlap        std                         //注意这        add     esi,ecx        add     edi,ecx        dec     esi        dec     edi        rep     movsb        cld        jmp     short movedonemovedone:        pop     edi        pop     esi 

热点排行