구현하게 된 계기
-
code injection을 진행하다보니, 해당 함수를 많이 사용하게되는데 이를 macro함수로 구현하게 되면 API호출을 줄일 수 있습니다.
-
assembly를 사용하여 구현이 가능하지만, 이는 환경에 영향을 받기 때문에 macro함수로 구현하였습니다
-
call이 제한된 상황에서 유용하게 사용 할 수 있습니다.
-
어떤 운영체제에서도 동일한 작동을 보장 받을 수 있는 함수가 필요하였습니다.
구현을 위해 참고 한 문서
구현한 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #ifndef _MEMIO_H #define _MEMIO_H #define TEMP(n) TEMP ## n #define MEMCOPY(Destination, Source, Size) \ do \ { \ int LINE = __LINE__; \ int TEMP(LINE) = 0; \ for(; TEMP(LINE) != Size; TEMP(LINE)++) \ { \ ((unsigned char *)Destination)[TEMP(LINE)] = ((unsigned char *)Source)[TEMP(LINE)]; \ } \ } while(0); #define MEMSET(Destination, Source, Size) \ do \ { \ int LINE = __LINE__; \ int TEMP(LINE) = 0; \ for(; TEMP(LINE) != Size; TEMP(LINE)++) \ { \ ((unsigned char *)Destination)[TEMP(LINE)] = Source \ } \ } while(0); #endif | cs |
'코딩' 카테고리의 다른 글
비주얼스튜디오 2019, 64비트에서 어셈블리 컴파일 (0) | 2020.03.31 |
---|---|
파일 버퍼링 구현 (C/CPP) (0) | 2019.09.16 |