차이 2

뮤텍스와 세마포어,,, WAIT_ABANDONED 발생 여부

WAIT_ABANDONED 이 리턴값은 WaitForSingleObject 기타 등등 대기 함수에서 동기화 객체를 소유한 스레드가 terminate되거나 exit 된 경우 발생하게 된다. 크리티컬 섹션 같은 동일 프로세스 내에서만 통용되는 동기화 함수는 이런 기능?을 제공하지 않으므로 소유 스레드가 락 상태가 되면 나머지 기다리는 스레드들은 무한정 대기해버리는 문제가 발생한다. 뮤텍스는 저 기능 하나만으로도 그 동안 매우 유용하게 프로세스 간이나 스레드 간에 잘 사용했다. 그런데 카운트 제한 때문에 세마포어를 사용할 일이 있어서 테스트해보았는데 뮤텍스처럼 불측의 종료시 WAIT_ABANDONED 결과값이 발생하지 않았다. 뮤텍스처럼 이름을 붙이는 것도 가능하고 프로세스 간에도 전역적으로 통용되니 비슷할 ..

API 2012.03.06

mov와 lea 명령어 차이

mov는 좌변에 우변(혹은 상수)의 값을 입력하는 것이다. lea는 좌변(레지스터만 가능)에 우변의 주소값을 입력하는 것이다. mov eax, dword ptr ss:[ebp-4]; 위의 경우 eax는 ebp-4 메모리 주소에 있는 4바이트(dword)값이 입력될 것이다. 참고로 dword ptr ss:[ebp-4];에서 [주소]는 주소에 존재하는 값을 의미한다. dword ptr에 의해 4바이트 의 값을 읽어들인다. word ptr이면 2바이트, byte ptr이면 1바이트를 읽어들인다. mov는 값을 입력하는 것이므로 mov eax, 12345(상수) 문장은 당연히 성립가능하다. mov dword ptr ss:[esp-4], 12345; mov dword ptr ds:[0x00560033], 1234..

Assembly 2011.02.27