튜기's blogggg

어셈블리 memset

by St1tch

mov     eax, data

mov     edi, dest

mov     ecx, size

rep stos(d)


이런식의 어셈블리어가 함수 프롤로그 다음에 있으면

edi주소에 해당하는 크기*size만큼 eax로 채운다.

b = 1, w = 2, d = 4 byte 이다.


따라서 만약 0x1234에 다가 0을 4바이트씩 100바이트 채우기 위해서는


lea     ebx, [0x1234]

mov     eax, 0

mov     edx, 25

mov     edi, ebx

mov     ecx, edx

rep stosd


대충 이런식의 명령어로 memset기능을 할 수 있다.


간단하면서도 memset함수보다 빠른 장점이 있다.



블로그의 정보

튜기's blogg(st1tch)

St1tch

활동하기