반응형

Information* 107

How to break out of multiple loops in python?

How to break out of multiple loops in python? 원래 C 코드 상에서 반복문이 여러 개로 겹쳐있을 때, 어떻게 하면 반복문들을 효율적으로 break할 수 있는지 찾아보다가 python 코드 상에서의 질문을 보게되었다. 코드가 더러워지지만 조건문을 사용하자는 파 vs 이럴 때 쓰라고 goto가 아직까지 남아있는 것이다라는 파, 두 파의 대립을 보게되었다. 참고로 나는 goto에 마음이 갔다. 코드도 예쁘고 어차피 어셈상에서 보면 다 똑같은 jmp 명령어가 아닌가. 어쨋든 python에서 여러 반복문 탈출에 대한 다음 질문을 살펴보면 예시로 든 multiple loop는 다음과 같다. while True: #snip: print out current state while T..

특정 프로그램이 지원하는 파일 확장자 알아보기 in windows 10

특정 프로그램이 지원하는 파일 확장자 알아보기 in windows 10 일단 퍼징할 프로그램으로 IrfanView를 선택했는데, 타겟 함수를 정하기 위해 우선 IrfanView가 지원하는 파일 확장자를 알아보기로 했다. 검색해보니 대충 레지스트리를 살펴서 특정 확장자에 대해 어떤 어플리케이션으로 열지 지정하기 위한 레지스트리 키와 데이터는 알 수 있었다. 다음 세 가지 경로 아래에 각 확장자 이름으로 나누는 것을 확인할 수 있었다. HKEY_CLASSES_ROOT HKEY_CURRENT_USER\Software\Classes HKEY_LOCAL_MACHINE\Software\Classes 그러나 내가 알고 싶은 것과는 조금 방향이 달라서 조금 삽질하다가 다음 두 가지의 방법을 찾아냈다. Solution ..

CMakeLists.txt 로 Visual Studio Code Debugging 하기

CMakeLists.txt 로 Visual Studio Code Debugging 하기 Visual Studio Code Extension 중 다음 세 가지 설치하기 C/C++ for Visual Studio Code CMake For VisualStudio Code CMake Tools (for Visual Studio Code) 설치 후, ctrl+shift+p로 Command Palette 실행 CMake: Configure -> CMake: Build -> CMake: Debug로 진행하는데, build 과정에서 CMakeLists.txt 파일을 선택하는 과정이 있음. 루트 디렉토리에 해당 파일이 있으면 자동으로 넘어가지만, 종종 위치가 다른 경우도 있으므로 사용자가 직접 파일의 위치를 지정해주면..

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

멀티 코어와 게임 성능 간의 상관 관계 궁금해져서 대충 검색해서 나온 내용들을 짜집기해봄. 문제 제기할 부분이 있으면 댓글로 지적부탁. 요즘 멀티 코어 게임이 많아지고 있음. 멀티 코어로 개발하는 것은 버그도 많이 터지고 개발사 입장에서 어려운 일이지만, 성능 상의 이득이 확실히 있음. 더군다나 게임 엔진이나 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 대로 메모리에 올라가는 것을 확인할 수 있다.

반응형