데이터 이동
mov
src에 들어있는 값을 dst에 대입합니다.
lea
src의 주소를 dst 저장합니다.
산술 연산
add
dst에 src의 값을 더합니다
sub
dst에서 src의 값을 뺍니다
inc
op의 값을 1 증가시킵니다.
dec
op의 값을 1 감소시킵니다.
논리연산
and
dst와 src의 and연산
or
dst와 src의 or연산
xor
dst와 src의 xor연산
not
op의 비트 전부 반전
비교
cmp
두 피연산자를 빼서 대소를 비교합니다. 결과 값을 op1에 대입하지 않습니다.
만약 두 수의 뺄셈 결과 값이 0이면 ZF 플래그를 설정합니다.
test
두 피연산를 and연산 합니다. 결과 값을 op1에 대입하지 않습니다.
test를 통해 ZF플래그 값이 설정되면, rax의 값이 0 이라는 것을 판단 할 수 있습니다.
분기
jmp
addr로 rip를 이동시킵니다.
je
직전에 비교한 두 피연산자가 같으면 이동시킵니다.
jg
직전에 비교한 두 연산자 중 전자가 더 크면 점프
스택
push
value를 스택 최상단에 쌓음
pop
스택의 최상단 값을 꺼내서 reg에 대입
프로시저
프로시저는 특정 기능을 수행하는 코드 조각을 말한다.
call
addr에 위치한 프로시저 호출
프로시저를 실행하고 나서는 원래 실행 흐름으로 들어와야 하므로 스택에 call 다음 명령어 주소를 저장하고 프로시저로 rip를 이동시킨다.
ret
스택에 저장되어있는 Return Address를 꺼내어 rip에 대입합니다.