$bash

DWORD? WORD?

0x0300 : Study/0x0307 : Reversing

dword 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