pushrbx icon

Optimized memzero

pushrbx | PRO | 01/13/14 04:45:40 PM UTC | 0 ⭐ | 495 👁️ | Never ⏰ | []
C++ |

730 B

|

None

|

0 👍

/

0 👎

/** 
 * Optimized memset type operation for zeroing memory locations
 */
inline void appZeroMemory(sdVoid *destPtr, int count)
{
    __asm
    {
        mov ecx, [count] // store the repetition count for rep stosd
        mov edi, [destPtr]
        xor eax, eax // fill eax with zero, the contents of eax will go where the edi points to
        // we need two counters:
        mov edx, ecx
        shr ecx, 2 // divide [count] by 4
        and edx, 3 // store the rest of the counts to edx
        // zero on every 4 bytes, that's why we need two counters
        rep stosd // store dword from eax where the edi points to
        // if the [count] variable can't be divided by 4, then zero the rest of the bytes:
        mov ecx, edx
        rep stosb // store the lower 8bit of eax to es:di, ecx times
    }
}

Comments