1) 주소 연산자 (&)
2) 산술 연산자 (+ -)
pointer += 1;
int*
[!] 포인터에서 +나 - 등 산술 연산으로 1을 더하거나 빼면,
한번에 TYPE의 크기만큼을 이동하라!
int* pointer = &number;
lea eax,[number]
mov dword ptr [pointer],eax
number += 1;
mov eax,dword ptr [number]
add eax,1
mov dword ptr [number],eax
pointer += 2;
mov eax,dword ptr [pointer]
add eax,8
mov dword ptr [pointer],eax
3) 간접 참조 연산자 (*)
역참조 연산자
4) 간접 멤버 참조 연산자 (->)
Player player;
player.hp = 100;
mov dword ptr [player],64h
player.damage = 10;
mov dword ptr [ebp-58h],0Ah
Player* playerPtr = &player;
lea eax,[player]
mov dword ptr [playerPtr],eax
(*playerPtr).hp = 200;
mov eax,dword ptr [playerPtr]
mov dword ptr [eax], 0C8h
(*playerPtr).damage = 200;
mov eax,dword ptr [playerPtr]
mov dword ptr [eax+4],0C8h
playerPtr->hp = 200;
mov eax,dword ptr [playerPtr]
mov dword ptr [eax], 0C8h
playerPtr->damage = 200;
mov eax,dword ptr [playerPtr]
mov dword ptr [eax+4],0C8h