ÇÁ·Î±×·¡¹Ö

 3200, 1/160 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   k1990121
   http://¾øÀ½
   ¾î¼Àºí¸®¾î°ü·Ã Áú¹®¿ä...

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6282 [º¹»ç]


#include <stdio.h>

char* m_cpy(char* a, char* b)
{
        char* rb = b;

        _asm
        {
                mov edi, a
                lea esi, b
L2:    

                cmp byte ptr [esi], 0x00
                je L1
                
                mov [esi], byte ptr [edi]
                inc esi
                inc edi
                jmp L2
L1:    
                mov byte ptr [esi], 0x00;

        }
        return rb;

}





int main()
{
        char* str1 = "Hello i2sec";
        char str2[20];
        char* tmp = NULL;

        printf("str2 : %s \n", str2);

        tmp = m_cpy(str1,str2);
        
        printf("tmp : %s\n", tmp);
        printf("str2 : %s\n", str2);
        printf("tmp Addr : %p\nstr2 : %s\n", tmp,str2);
        
        return 0;

}


ÀÌ·¸°Ô ­´Âµ¥
inc esi ºÎºÐ¿¡¼­ ¿¡·¯°¡ ³ª´Âµ¥...ÀÌÀ¯°¡ ¹º°¡¿ä??

  Hit : 4116     Date : 2012/12/15 03:35



    
k1990121 #include <stdio.h>

char* m_cpy(char* a, char* b)
{
char* rb = b;
char* ra = a;

_asm
{
mov esi, a
mov edi, b
xor eax, eax
L2:
cmp [esi], 0x00
je L1

inc esi
inc eax
jmp L2

L1:
mov ecx,eax
mov esi,ra
rep movs byte ptr [edi], byte ptr [esi]
mov byte ptr [edi], 0x00


}
return rb;

}

ÀÌ·¸°Ô Çϴϱî ÇØ°á µÇ±äÇߴµ¥ ¿Ö. inc esi´Â ¾ÈµÇ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù ~ ´äº¯Á» ´Þ¾ÆÁÖ¼¼¿ä
2012/12/15