07. arm 어셈블리어 정리
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 변수를 저장한다.