1. ASL, ASR, LSL, LSR, ROR, ROL
ASL : 왼쪽으로 쉬프트 , 빈자리는 부호로 채움
ASR : 오른쪽으로 쉬프트 , 빈자리는 부호로 채움
LSL : 왼쪽으로 쉬프트 , 빈자리는 0으로 채움
LSR : 오른쪽으로 쉬프트, 빈자리는 0으로 채움
ROR : 오른쪽으로 로테이션
ROL : 왼쪽으로 로테이션
2. MOV
ex) MOV r0, [r1, r2] : r0에 r1+r2 주소 값을 읽어서 저장
MOV r0, r1, ROR #1 : r1을 오른쪽으로 한 비트 로테이션 후 그 값을 r0에 저장
3. 산술 명령어
ex) ADD r1, r2 #4 : r2에 4를 더해서 r1에 저장
SUB r1, r1, #1 : r1에서 1을 뺌
ORR r1, r2, r3 , LSL r4 : r3을 r4 만큼 왼쪽으로 쉬프트 한 후, 결과를 r2와 OR 연산하여 r1에 저장
4. 분기 명령어
ex) B it : 라벨이 it 인 곳으로 무조건 분기 (intel 에서 jmp 와 동일)
BEQ it : 플래그가 0이면 분기, 아니면 다음 명령어 수행 (je와 동일)
BNE it : 플래그가 0이 아니면 분기, 아니면 다음 명령어 수행 (jnz와 동일)
BL sub+ROM : 계산된 위치의 서브루틴을 호출
CMP r1, #4 : r1과 4를 비교
5. 로드, 스토어 명령
LDRB : Byte 변수를 불러올 때 사용
LDRH : Short 변수를 불러올 때 사용
LDR : int 변수를 불러올 때 사용
STR 또한 마찬가지로 뒤에 B 가 붙을 시 Byte 변수, H가 붙을 시 Short 변수를 저장한다.
'Reversing' 카테고리의 다른 글
09. Anti-Debugging (0) | 2018.06.15 |
---|---|
08. angr (0) | 2017.11.01 |
06. gdb 명령어 정리 (0) | 2017.09.29 |
05. 스택, 스택프레임 (0) | 2017.08.04 |
04. 함수 호출 규약 (0) | 2017.08.02 |