MDSTECH
TRACE32
TRACE32 Solution
TRACE32 Trace Solution
TRACE32 More Product
TRACE32 Software Solution
Why TRACE32?
교육신청
정규교육
교육과정 안내
교육장 안내
교육설문
자료실
TRACE32 소프트웨어
TRACE32 매뉴얼
iTSP
TRACE32 영상
인증서
고객지원
뉴스레터
Q&A
FAQ
원격지원
검색창
검색버튼
회원가입
로그인
TRACE32
TRACE32 Solution
TRACE32 Trace Solution
TRACE32 More Product
TRACE32 Software Solution
Why TRACE32?
교육신청
정규교육
교육과정 안내
교육장 안내
교육설문
자료실
TRACE32 소프트웨어
TRACE32 매뉴얼
iTSP
TRACE32 영상
인증서
고객 지원
뉴스레터
Q&A
FAQ
원격지원
사이트맵 보기
B, BL, BX and BLX 문서 원본 보기
←
B, BL, BX and BLX
이동:
둘러보기
,
검색
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게만 가능합니다:
사용자
문서의 원본을 보거나 복사할 수 있습니다:
<p><span style="font-family: malgun;">B(Branch), BL(Branch with Link), BX(Branch indirect), BLX(Branch indirect with Link) 명령을 통해</span></p> <p><span style="font-family: malgun;">현재 진행하던 코드 위치에서 다른 곳으로 분기할 수 있습니다.</span></p> <p> </p> <p> </p> <p><span style="font-size: large;"><strong><span style="font-family: malgun; color: #3366ff;">B : Branch (immediate)</span></strong></span></p> <p><span style="font-family: malgun;">"B" 명령어 뒤에 지정된 상수값에 해당하는 주소로 분기하는 명령입니다.</span></p> <p><span style="font-family: malgun;">아래의 "B <strong><span style="color: #ff9900;">0x080048DE</span></strong>" 명령을 실행하면, 해당 번지(0x0800_48DE)로 분기하게 됩니다.</span></p> <p> </p> <p style="padding-left: 30px;"><span style="font-family: malgun;">실행 전 :</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-08/1431047403.jpg" alt="" /></span></p> <p> </p> <p style="padding-left: 30px;"><span style="font-family: malgun;">실행 후 :</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-08/1431047408.jpg" alt="" /></span></p> <p> </p> <p> </p> <p> </p> <p><span style="font-size: large;"><strong><span style="font-family: malgun; color: #3366ff;">BL : Branch with Link (immediate)</span></strong></span></p> <p><span style="font-family: malgun;">"BL" 명령어 뒤에 지정된 상수값에 해당하는 주소로 분기하되,</span></p> <p><span style="font-family: malgun;">현재의 PC(Program Counter)값 +0x2 번지의 복귀 주소값을 가지는 링크 레지스터(R14)에 남겨놓는 방식입니다.</span></p> <p> </p> <p><span style="font-family: malgun;">아래의 경우 "BL <span style="color: #ff9900;"><strong>0x08004890</strong></span>" 명령을 수행하면 아래와 같은 동작이 이루어집니다.</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;">1. "BL" 명령어 뒤의 상수값인 0x0800_4890 번지로 분기합니다. (Thumb 모드라 주소 끝이 홀수)</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;">2. 현재 PC의 다음 명령어인 0x0800_488E 번지가 R14(링크 레지스터)로 복사됩니다.</span></p> <p><span style="font-family: malgun;">자세한 것은 스크린샷을 통해 확인해 보시기 바랍니다.</span></p> <p> </p> <p style="padding-left: 30px;"><span style="font-family: malgun;">실행 전 :</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-08/1431047113.jpg" alt="" /></span></p> <p> </p> <p style="padding-left: 30px;"><span style="font-family: malgun;">실행 후 :</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-08/1431047118.jpg" alt="" /></span></p> <p> </p> <p> </p> <p> </p> <p><span style="font-size: large;"><strong><span style="font-family: malgun; color: #3366ff;">BX : Branch indirect (register)</span></strong></span></p> <p><span style="font-family: malgun;">"BX" 명령어 뒤에 지정된 레지스터로 분기하는 명령입니다.</span></p> <p><span style="font-family: malgun;">아래와 같이 "BX <span style="color: #ff6600;"><strong>R0</strong></span>" 명령을 실행하면, R0의 값 (0x0800_53E9) 번지로 분기하게 됩니다.</span></p> <p> </p> <p style="padding-left: 30px;"><span style="font-family: malgun;">실행 전 :</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-08/1431047846.jpg" alt="" /></span></p> <p> </p> <p style="padding-left: 30px;"><span style="font-family: malgun;">실행 후 :</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-08/1431047851.jpg" alt="" /></span></p> <p> </p> <p> </p> <p> </p> <p><span style="font-size: large;"><strong><span style="font-family: malgun; color: #3366ff;">BLX : Branch indirect with Link (register)</span></strong></span></p> <p><span style="font-family: malgun;">"BLX" 명령어 뒤에 지정된 레지스터의 값에 해당하는 주소로 분기하되,</span></p> <p><span style="font-family: malgun;">현재의 PC(Program Counter)값 +0x2 번지의 복귀 주소값을 가지는 링크 레지스터(R14)에 남겨놓는 방식입니다.</span></p> <p> </p> <p><span style="font-family: malgun;">아래의 경우 "BLX <strong><span style="color: #ff6600;">R0</span></strong>" 명령을 수행하면 아래와 같은 동작이 이루어집니다.</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;">1. R0의 값인 0x0800_4845 번지로 분기합니다. (Thumb 모드라 주소 끝이 홀수)</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;">2. 현재 PC의 다음 명령어인 0x0800_53DC 번지가 R14(링크 레지스터)로 복사됩니다.</span></p> <p><span style="font-family: malgun;">자세한 것은 스크린샷을 통해 확인해 보시기 바랍니다.</span></p> <p> </p> <p style="padding-left: 30px;"><span style="font-family: malgun;">실행 전 :</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-08/1431046674.jpg" alt="" /></span></p> <p> </p> <p style="padding-left: 30px;"><span style="font-family: malgun;">실행 후 :</span></p> <p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-08/1431046678.jpg" alt="" /></span></p> <p> </p> <p> </p> <p>경우에 따라서는 LDM(load multiple registers) 이나 POP(pop registers from stack) 명령을 통해,</p> <p>스택에 저장된 주소값을 PC로 복사함으로써 Branch와 동일한 효과를 내기도 합니다.</p> <p>관련하여서는 "<strong><a href="/wiki/index.php/PUSH_and_POP">Memory access instructions - PUSH and POP</a></strong>" 을 확인해 보시기 바랍니다.</p> <p> </p> <p><span style="font-family: malgun;">이상으로 Cortex-M에서 사용되는 각종 분기문에 대해 알아보았습니다.</span></p> <p><span style="font-family: malgun;">잘못된 사항이나 추가 문의사항은 TRACE32@mdstec.com 으로 연락 부탁드립니다.</span></p> <p> </p> <p><span style="font-family: malgun;">"<strong><a href="/wiki/index.php/Cortex-M">TRACE32로 바라본 ARM - Cortex-M</a></strong>" 으로 돌아가기</span></p>
B, BL, BX and BLX
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
행위
검색
TRACE32 Dummy
TRACE32
iTSP User's Guide
aTSP User's Guide
Linux Debugging
Debugging Tips
Trace Analysis
Virtual Target
TRACE32로 바라본 ARM
TRACE32 FAQ
TRACE32 Trouble Shooting
TRACE32 Software Update
Software Revision History
DT10 / DT-Win
다운로드
DT10 Evaluation
DT-Win Evaluation
TestPoint 삽입 Error
Build Error
DT10 FAQ
도구
여기를 가리키는 문서
가리키는 글의 바뀜
특수 문서 목록
문서 정보