Jiyong's STUDY

[기초] 어셈블리 명령 포맷 본문

보안/리버싱, 어셈블리

[기초] 어셈블리 명령 포맷

Kingjiyong 2020. 7. 16. 11:31

x86 CPU의 기본 구조인 IA-32 기준

 

 

IA-32의 기본 형태는

 

 "명령어 + 인자"

 

로 이루어졌다.

 

예를 들어

 

 push 337

 

으로 되어있다면 여기서 mov나 push같은 것을 명령어라고 한다.

이는 옵코드(opcode)라고 한다. 그 뒤에 인자가 들어오는데 인자는 명령어 다음에

"어떤 장소로 값을 넣을 것인지", 또는 "명령어에 해당하는 값" 등이 된다.

이는 오퍼랜드(operand)라고 한다. 

 

 mov eax, 1

 

이런식으로 있다면 여기서 옵코드는 mov, 오퍼랜드는 eax와 1 두개가 된다.

참고로 모든 오퍼랜드는 앞의 것이 destination이고 뒤의 것이 source이다. (예시로 memcpy, strcpy)