포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.

[유용한 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


 

profile

인생은 연극이고 세상은 무대이다!

이솝 임베디드 포럼 운영 및 비즈니스와 관련된 것 이외에 E-Mail이나 메신저 및 휴대폰 등을 통한 개인적인 질문 및 답변은 받지 않습니다. 문의 사항은 이솝 임베디드 포럼 게시판을 이용해 주시면 감사하겠습니다.

엮인글 :
http://www.aesop.or.kr/index.php?mid=Board_Documents_Linux_Applications&document_srl=35443&act=trackback&key=d72
List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인