프로그래밍

 3198, 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 : 4418     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