Windows System Programming 64 bit Programming contents 1
Windows System Programming -64 bit Programming-
contents 1. WIN 32 vs WIN 64 – 컴퓨터 구조적 관점 – 프로그래머 관점 2. Win 64 구현 3. System Programming Project Design 2009 -03 -24 호남대학교 정보통신공학과 1
64 bit Programming Windows Style Type Win 64(64 bit Windows 기반)로 넘어가면서 새로운 자료형(끝이 32혹은 64로 끝나는)이 추가 새로운 자료형은 시스템에 상관없이 32 bit(*32 type) 와 64 bit(*64 type)로 표현 WINDOWS 자료형 의미 정의 형태 BOOL Boolean variable typedef int BOOL DWORD 32 -bit unsigned integer typedef unsigned long DWORD; DWORD 32 32 -bit unsigned integer typedef unsigned int DWORD 32; DWORD 64 64 -bit unsigned integer typedef unsigned __int 64 DWORD 64; INT 32 -bit signed integer typedef int INT; INT 32 32 -bit signed integer typedef signed int INT 32; INT 64 64 -bit signed integer typedef signed __int 64 INT 64 PINT INT에 대한 포인터 typedef int* PINT; PINT 32에 대한 포인터 typedef signed int* PINT 32; PINT 64에 대한 포인터 typedef signed __int 64* PINT 64 기본 자료형 포인터 ※windows의 특별한(? ) 자료형 사용에 대해 • 명시적 표현으로 명확성 ( int* PINT ) • 변경 또는 추가 사항 용이 ( typedef unsigned long DWORD) 그러나 이것은 Windows기반에서만 실행된다는 전제하에 사용 과제: Windows 자료형 확인하기 2009 -03 -24 호남대학교 정보통신공학과 11
64 bit Programming Polymorphic type 1 32 bit와 64 bit의 포인터 크기가 다르기 때문에 발생할 수 있는 문제를 해결하기 위해 등장한 자료형 포인터값 기반의 산술 연산을 위해 정의된 자료형 Base. Tsd. h #if defined(_WIN 64) typedef __int 64 INT_PTR, *PINT_PTR; typedef unsigned __int 64 UINT_PTR, *PUINT_PTR; typedef __int 64 LONG_PTR, *PLONG_PTR; typedef unsigned __int 64 ULONG_PTR, *PULONG_PTR; #else typedef _int INT_PTR, *PINT_PTR; typedef _unsigned int UINT_PTR, *PUINT_PTR; typedef long LONG_PTR, *PLONG_PTR; typedef unsigned long ULONG_PTR, *PULONG_PTR; #endif 2009 -03 -24 호남대학교 정보통신공학과 12
64 bit Programming Polymorphic type 2 Polymorphic. Type 1. cpp #include <stdio. h> #include <tchar. h> #include <windows. h> 64 bit로 전환 UINT Cal. Distance(UINT a, UINT b) { return a - b; } int _tmain(void) { INT val 1 = 10; INT val 2 = 20; } 2009 -03 -24 UINT 64 Cal. Distance(UINT 64 a, UINT 64 b) { return a - b; } 상호 호환 #if defined(_WIN 64) UINT Cal. Distance(UINT a, UINT b) _tprintf(_T("Position: %p, %p n"), (UINT)&val 1, (UINT)&val 2); #else _tprintf( UINT 64 Cal. Distance(UINT 64 a, UINT 64 b) _T("distance: %d n"), #endif Cal. Distance((UINT)&val 1, (UINT)&val 2) { return a – b; } ); return 0; 호남대학교 정보통신공학과 13
64 bit Programming Polymorphic type 3 Polymorphic. Type 2. cpp #include <stdio. h> #include <tchar. h> #include <windows. h> UINT_PTR Cal. Distance(UINT_PTR a, UINT_PTR b) { return a - b; } int _tmain(void) { INT val 1 = 10; INT val 2 = 20; } 2009 -03 -24 _tprintf(_T("Position: %p, %p n"), (UINT_PTR)&val 1, (UINT_PTR)&val 2); _tprintf( _T("distance: %d n"), Cal. Distance((UINT_PTR)&val 1, (UINT_PTR)&val 2) ); return 0; 호남대학교 정보통신공학과 14
System Programming Project Design 2009 -03 -24 호남대학교 정보통신공학과 15
- Slides: 18