[유용한 ARM 분기 명령어와 숫자 라벨 이용법]
/** 여기서 b는 back이며 숫자 label이 앞부분에 있음을 나타낸다.
그리고 f라고 하면 forward이며 숫자 라벨이 뒷부분에 있음을 나타낸다. **/
[EX1]
;이 명령은 r1의 값이 5면 LABEL로 가서 반복하고, 아니면 빠져 나간다.
LABEL
cmp r1, #5
beq LABEL
이는 ADS나 SDT에서 다음과 같이 다시 쓸 수 있다.
0
cmp r1, #5
beq %b0
그리고 Linux GCC에서는 다음과 같이 쓸 수 있다.
0:
cmp r1, #5
beq 0b
[EX2]
;이 명령은 r1의 값이 5가 아니면 LABEL로 가서 반복하고, 5면 빠져 나간다.
LABEL
cmp r1, #5
bne LABEL
이는 ADS나 SDT에서 다음과 같이 다시 쓸 수 있다.
0
cmp r1, #5
bne %b0
그리고 Linux GCC에서는 다음과 같이 쓸 수 있다.
0:
cmp r1, #5
bne 0b
[EX3]
;이 명령은 r1의 8번 비트가 ‘0’이면 LABEL로 가서 다시 반복하고, ‘1’이면 빠져 나간다.
LABEL
tst r1, #0x00000100
beq LABEL
이는 ADS나 SDT에서 다음과 같이 다시 쓸 수 있다.
0
tst r1, #0x00000100
beq %b0
그리고 Linux GCC에서는 다음과 같이 쓸 수 있다.
0:
tst r1, #0x00000100
beq 0b
[EX4]
;이 명령은 r0의 8번 비트가 ‘1’이면 LABEL로 가서 반복하고, ‘0’이면 빠져 나간다.
LABEL
tst r1, #0x00000100
bne LABEL
이는 ADS나 SDT에서 다음과 같이 다시 쓸 수 있다.
0
tst r1, #0x00000100
bne %b0
그리고 Linux GCC에서는 다음과 같이 쓸 수 있다.
0:
tst r1, #0x00000100
bne 0b
[EX5]
LABEL
tst r0, #0xff
beq LABEL
; r0의 하위 8비트 값이 하나라도 0이면 LABEL로 되돌아가 반복하고
; r0의 하위 8비트 값이 모두 1이면 빠져나간다
[EX6]
LABEL
tst r0, #&0x03
beq LABEL
; r0의 하위 0번, 1번 비트 값이 모두 1이면 빠져나간다
출처 : http://www.aesop.or.kr/
'Embedded > Softwares' 카테고리의 다른 글
유용한 ARM 어셈블리 (if, for, do_while, switch) (0) | 2010.05.05 |
---|---|
유용한 ARM 어셈블리 매크로 (0) | 2010.05.05 |
모듈명령, diff, patch (0) | 2009.06.08 |
minicom (0) | 2009.06.03 |
mobm 이 뭔가요? (0) | 2009.06.03 |
WRITTEN BY
- RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.