DWORD? WORD?
0x0300 : Study/0x0307 : Reversingdword ptr의 뜻이 전부터 궁금했는데.
결론은 word 2byte . Dword 4 byte
[] 적혀있는것은 포인터로 이해하면 되는데. 아마 이 개념은 원래 알고 있는 거긴한데
결론은 사이즈 표기? 라 이해해야되는건가... 그래서 좀더 검색 해서 정리해보려고 한다.
WinDef.h 에는 다음과 같이 Dword / word 가 정의 되어 있다.
typedef unsigned long DWORD;
typedef unsigned short WORD;
따라서 대부분 win32 기반하에선 DWORD는 4byte(32bit 기준)가 된다. 그럼 당연히 WORD는 2byte(16bit)이 된가고 생각하면 된다.
근데 여기서 또 궁금증이 생기는 것이 왜 32bit window에서 word의 size가 16bit이 될까 인데... 이는 하위 호환성이다.
intel 8086 processor 부터 이어지는 intel CPU Architecture의 하위 호환 문제 때매 컴파일러에서도 그냥 WORD를 16bit을 표현했다고 한다.
그 이외에도 VS에는 DWORD32 / 64 형을 지원 한다고 한다.
typedef unsigned int DWORD32, *PDWORD32;
typedef unsigned __int64 DWORD64, *PDWORD64;
DWORD32를 살펴보면 long대신에 int 가 쓰인다. 그럼 이게 좀 궁금해지는게 .. intel에서 하위 호환 문제를 해결 하기 위해서 규칙을 새웠는데 그걸 어기는것이 아닌가... 흠 잘 모르겠따..
출처 : http://wiki.kldp.org/wiki.php/32bitCodeTo64bit
'0x0300 : Study > 0x0307 : Reversing' 카테고리의 다른 글
Angr 설치 (0) | 2017.05.21 |
---|---|
linux remote ida debug (0) | 2017.05.08 |
Reversing _ 1 day(잠시중단) (2) | 2016.12.20 |
Anti Debugging (0) | 2016.11.30 |
CodeEnge_Basic L01~05 (0) | 2016.10.04 |