반응형

Information*/알면도움됨 84

멀티 코어와 게임 성능 간의 상관 관계

멀티 코어와 게임 성능 간의 상관 관계 궁금해져서 대충 검색해서 나온 내용들을 짜집기해봄. 문제 제기할 부분이 있으면 댓글로 지적부탁. 요즘 멀티 코어 게임이 많아지고 있음. 멀티 코어로 개발하는 것은 버그도 많이 터지고 개발사 입장에서 어려운 일이지만, 성능 상의 이득이 확실히 있음. 더군다나 게임 엔진이나 API에서 멀티 코어를 지원하기 때문에 개발사 입장에서는 많이 편해졌을 것. 요즘 나오는 AAA급의 게임은 6코어 12쓰레드, 8코어 16쓰레드 정도에서 최상의 가성비를 뽑을 수 있음. 그 이상도 성능적 향상이 있으나 크지 않음. 게임에서 존재하는 대부분의 병렬처리는 랜더링 작업에서 이루어짐. 이는 GPU에서 대부분 처리되기 때문에, CPU보다는 GPU의 역할이 큼. CPU 상에서 병렬적으로 처리될..

디버거에서 Rebase되는 문제 해결하기

디버거에서 Rebase되는 문제 해결하기 디버깅하려고 하는데 주소가 하드코딩되어있어서 rebase 되면서 데이터 영역의 값이 제대로 업데이트 되지 않아 디버깅이 불가능했다.실제로 메모리 맵을 살펴보면 다음과 같이 PE 헤더에 등록된 Image base 주소(0x400000)가 아닌 다른 주소로 지정되어 있는 것을 확인할 수 있었다.약간의 검색과 추론을 이용하여 Opitalnal header의 다음의 특성이 rebase를 일으킨다는 것을 알 수 있었다. 0x40의 dynamic base 특성 때문에 rebase가 발생하게 된다.헥스에디터를 이용하여 해당 값을 없애주면 프로세스가 rebase 되지 않고 Image base 대로 메모리에 올라가는 것을 확인할 수 있다.

gdb 활용 팁

gdb 활용 팁에버노트 정리하다가 끄적여논거 대충 써서 올려본다. 파일에 symbol이 존재하는 경우 디버깅시 매우 행복함을 느낄 수 있다.(gdb) x/x &변수명 같이 사용가능. 메모리 볼 때, vmmap 처럼(gdb) info proc mappings비슷하게 바이너리에 존재하는 함수 목록을 보고 싶으면 `info functions`을 이용해서 확인할 수도 있다. gdb.attach(r, 'b* 0x40~') 꼴로 중간에 gdb 디버깅을 사용하면, 브포를 특정 함수에 걸었을 때, 해당 함수 중간에 브포가 걸릴 수 있기 때문에 그럴 경우 finish를 사용해서 함수를 모두 실행시키면 깔끔하다.(gdb) finish 일반 gdb에서 heap 보려고 할 때, p main_arena.* 로 확인 가능.(gd..

nasm을 이용한 asm 코딩

nasm을 이용한 asm 코딩사용할 때마다 사소한게 자꾸 헷갈려서 대충 적어둔다. test.asmsection .text global main ;extern printf ​ main : xor eax, eax mov ecx, 100 cmp ecx, 0 je $ + 0x7 add eax, ecx dec ecx jmp $ - 0x8 push eax ret nop nop ​ section .data ;string db "%d", 0위는 short jump를 이용하여 1부터 100까지 더하는 for문 코드이다. 위처럼 대충 작성한 다음 다음처럼 nasm과 gcc를 이용하여 컴파일할 수 있다.ch4rli3kop at ubuntu in ~ $ nasm -f elf32 test.asm -o test.o ​ ch4rl..

IDA JNI Function 적용하기

IDA JNI Function 적용하기JNI은 Java Native Interface로 JAVA 환경이 아닌 다른 프로그래밍 언어 환경의 코드를 사용하기 위해 사용된다.이에 대한 설명은 뭐 다른 좋은 자료들을 찾아보길 바란다. Wikipedia의 Sample 코드를 보면 JNI Native Function은 다음과 같이 구성된다. 함수의 타입은 매핑 타입으로 몇 가지 정의되며, 이름은 클래스, 메소드 네임으로 구성된다.extern "C" JNIEXPORT void JNICALL Java_ClassName_MethodName (JNIEnv *env, jobject obj, jstring javaString) { const char *nativeString = env->GetStringUTFChars(jav..

[Visual Studio 2017] CL Casting Error

[Visual Studio 2017] CL Casting ErrorC:\Users\pch21\source\repos\smallestPE>cl /nologo /c -D_UNICODE /O1 main.c main.c main.c(5): warning C4133: '함수': 'unsigned short [15]'과(와) 'LPCSTR' 사이의 형식이 호환되지 않습니다. main.c(5): warning C4133: '함수': 'unsigned short [8]'과(와) 'LPCSTR' 사이의 형식이 호환되지 않습니다.-D_UNICODE에서 오류가 발생한다. -DUNICODE 옵션을 주면 된다.-D_UNICODE는 tchar.h와 -DUNICODE는 SDK header에 대해서 유니코드를 enable 시키는 옵..

반응형