어셈블리어 명령어 모듬2 기본(펌)
- 안드로이드 게임 분석/arm|어셈블리어
- 2020. 2. 1.
* RET, RETN: 호출한 지점으로 돌아간다.
return
* MOV: 메모리나 레지스터 등의 값을 옮길 때 쓰인다.
move
mov eax,ebx ; ebx의 값을 eax로 옮긴다.
mov eax,20 ; 20을 eax에 옮긴다.
mov eax,dword ptr [40203F] ;메모리 주소 40203F의 값을 eax에 옮긴다.
* PUSH: SP 레지스터를 조작하는 명령어 중의 하나로 스택에 데이터를 저장한다.
push
push eax ; eax 레지스터의 값을 스택에 집어 넣는다.
push 20 ; 20을 스택에 집어 넣는다.
push 40203F ; 40203F 값을 그대로 스택에 넣는 다
* POP: 역시 SP 레지스터를 조작하는 명령어로 스택의 데이터를 꺼낸다.
pop
pop eax ; 맨 마지막에 스택에 집어넣은 값을 꺼내 eax 레지스터에 저장.
* LEA: 대상 오퍼랜드의 값을 소스 오퍼랜드의 값으로 만든다.
load effective address
lea eax,ebx ; eax의 값을 ebx의 값으로 만든다.
* INC: 레지스터의 값을 1 증가 시킨다.
increase
inc eax ; eax의 값을 1 증가 시킨다.
* DEC: 레지스터의 값을 1 감소 시킨다.
decrease
dec eax ; eax의 값을 1 감소 시킨다.
* ADD: 레지스터의 값이나 메모리의 값을 더할 때 쓰인다.
add
add eax,ebx ; eax = eax + ebx
add eax,20 ; eax = eax + 20
add eax,dword ptr [40203F] ; eax = eax + 40203F의 값
* SUB: 레지스터의 값이나 메모리의 값을 뺄 때 쓰인다.
subtract
sub eax,ebx ; eax = eax - ebx
sub eax,20 ; eax = eax - 20
sub eax,dword ptr [40203F] ; eax = eax - 40203F의 값
* NOP: 아무 것도 하지 않는다.
no operation
* CALL: 프로시져(procedure)를 호출할 때 쓰인다.
call
call dword ptr [40203F] ; 메모리 주소 40203F을 호출한다.
* CMP: 레지스터 끼리 혹은 레지스터와 값을 비교한다.
compare
cmp eax,ebx ; eax와 ebx를 비교한다.
cmp eax,20 ; eax와 20을 비교한다.
cmp eax,dword ptr [40203F] ; eax와 메모리 40203F의 값을 비교한다.
* JMP: 특정 위치로 무조건 점프한다.
unconditional jump
jmp dword ptr [40203F] ; 메모리 40203F 위치에 적힌 4바이트 값(dword) 이 지정한 위치로 점프 .
조건부 점프: CMP나 TEST와 같은 연산 결과에 따라 점프를 결정
* JE: CMP나 TEST 의 결과가 같다면 점프
jump if equal
* JNE: CMP나 TEST 의 결과가 같지 않다면 점프
jump if not equal
* JZ: 왼쪽 인자의 값이 0 이라면 점프
jump if zero
* JNZ: 왼쪽 인자의 값이 0 이 아니라면 점프
jump if not zero
* JL: 왼쪽 인자의 값이 오른쪽 인자의 값보다 작으면 점프
jump if less; signed
* JNL: 왼쪽 인자의 값이 오른쪽 인자의 값보다 작지 않으면 (크거나 같으면) 점프
jump if not less; signed
* JB: 왼쪽 인자의 값이 오른쪽 인자의 값보다 작으면 점프
jump if below; unsigned
* JNB: 왼쪽 인자의 값이 오른쪽 인자의 값보다 작지 않으면 (크거나 같으면) 점프
jump if not below; unsigned
* JG: 왼쪽 인자의 값이 오른쪽 인자의 값보다 크면 점프
jump if greater
* JNG: 왼쪽 인자의 값이 오른쪽 인자의 값보다 크지 않으면 (작거나 같으면) 점프
jump if not greater
* JLE: 왼쪽 인자의 값이 오른쪽 인자의 값보다 작거나 같으면 점프
jump if less or equal; signed
* JGE: 왼쪽 인자의 값이 오른쪽 인자의 값보다 크거나 같으면 점프
jump if greater or equal
출처:게임도리 - 어셈블리 중요명령어 모음 초급자용 http://gdori.xyz/?mid=prob&document_srl=27682
'안드로이드 게임 분석 > arm|어셈블리어' 카테고리의 다른 글
자주쓰는 arm 어셈블리어 명령어2 (0) | 2020.03.04 |
---|---|
c# 어셈블리어 변환 ARM (0) | 2020.02.27 |
어셈블리어 명령어 모음ARM (0) | 2020.01.20 |
어셈블리어 명령어 기본 (0) | 2020.01.15 |
arm 어셈블리어 란? - (펌)아제 리아 연구소 (0) | 2020.01.15 |