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
원격지원
사이트맵 보기
CBZ and CBNZ 문서 원본 보기
←
CBZ and CBNZ
이동:
둘러보기
,
검색
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게만 가능합니다:
사용자
문서의 원본을 보거나 복사할 수 있습니다:
<p>Thumb-II 명령어에서만 사용되어 익숙하지 않은,</p> <p>CBZ(Compare and Branch on Zero) 와 CBNZ(Compare and Branch on Non-Zero) 명령에 대해 알아보겠습니다.</p> <p> </p> <p> </p> <p><span style="font-size: large;"><strong><span style="color: #3366ff;">CBZ : Compare and Branch on Zero</span></strong></span></p> <p>CBZ 명령은 "CBZ Rn, label" 과 같은 문법 구조를 가집니다.</p> <p>Rn의 값이 "0x0"이면 label로 분기하고,</p> <p>Rn의 값이 "0x0"이 아니면, 다음 번지로 진행합니다.</p> <p>자세한 것은 아래의 예를 통해 확인해 보시기 바랍니다.</p> <p> </p> <p><strong>CBZ 명령으로 비교한 레지스터 값이 0x0이 아닌 경우</strong></p> <p>아래의 "CBZ <span style="color: #ff9900;">R1</span>, 0x08000E56" 의 명령을 수행하는 시점에서, R1의 값은 0xA입니다.</p> <p>결과적으로 <span style="color: #ff9900;">R1!=0x0</span> 이므로 <span style="color: #ff9900;">분기 명령이 수행되지 않고</span>, 다음 번지인 0x0800_0E50 으로 진행하게 됩니다.</p> <p> </p> <p style="padding-left: 30px;">실행 전 :</p> <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-08/1431049364.jpg" alt="" /></p> <p> </p> <p style="padding-left: 30px;">실행 후 :</p> <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-08/1431049373.jpg" alt="" /></p> <p> </p> <p> </p> <p><strong><strong>CBZ 명령으로 비교한 레지스터 값이 0x0인 경우</strong></strong></p> <p>아래의 "CBZ <span style="color: #ff9900;">R1</span>, 0x08000E56" 의 명령을 수행하는 시점에서, R1의 값은 0x0입니다.</p> <p>결과적으로 <span style="color: #ff9900;">R1==0x0</span> 이므로 0x0800_0E56번지로 <span style="color: #ff9900;">분기 명령이 수행</span>됩니다.</p> <p> </p> <p style="padding-left: 30px;">실행 전 :</p> <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-08/1431049378.jpg" alt="" /></p> <p> </p> <p style="padding-left: 30px;">실행 후 :</p> <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-08/1431050984.jpg" alt="" /></p> <p> </p> <p> </p> <p> </p> <p><span style="font-size: large;"><strong><span style="color: #3366ff;">CBNZ : Compare and Branch on Non-zero</span></strong></span></p> <p>CBNZ 명령은 "CBNZ Rn, label" 과 같은 문법 구조를 가집니다.</p> <p>Rn의 값이 "0x0"이 아니면 label로 분기하고,</p> <p>Rn의 값이 "0x0"이면, 다음 번지로 진행합니다.</p> <p>자세한 것은 아래의 예를 통해 확인해 보시기 바랍니다.</p> <p> </p> <p><strong>CBNZ 명령으로 비교한 레지스터 값이 0x0이 아닌 경우</strong></p> <p>아래의 "CBNZ <span style="color: #ff9900;">R0</span>, 0x08000124" 의 명령을 수행하는 시점에서, R0의 값은 0x42입니다.</p> <p>결과적으로 <span style="color: #ff9900;">R0!=0x0</span> 이므로 <span><span style="color: #ff9900;">분기 명령이 수행</span>되어 0x0800_0124 번지로 분기하게 됩니다.</span></p> <p> </p> <p style="padding-left: 30px;">실행 전 :</p> <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-08/1431068769.jpg" alt="" /></p> <p> </p> <p style="padding-left: 30px;">실행 후 :</p> <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-08/1431068774.jpg" alt="" /></p> <p> </p> <p> </p> <p><strong>CBNZ 명령으로 비교한 레지스터 값이 0x0인 경우</strong></p> <p>아래의 "CBNZ <span style="color: #ff9900;">R0</span>, 0x08000124" 의 명령을 수행하는 시점에서, R0의 값은 0x0입니다.</p> <p>결과적으로 <span style="color: #ff9900;">R0==0x0</span> 이므로 <span style="color: #ff9900;">분기분이 수행되지 않고</span> 다음번지인 0x0800_0120 번지로 넘어가게 됩니다.</p> <p> </p> <p style="padding-left: 30px;">실행 전 :</p> <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-08/1431068760.jpg" alt="" /></p> <p> </p> <p style="padding-left: 30px;">실행 후 :</p> <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-08/1431068764.jpg" alt="" /></p> <p> </p> <p>이상으로, Thumb-II에서 사용되는 CBZ, CBNZ 명령에 대해 살펴보았습니다.</p> <p>잘못된 사항이나, 추가로 궁금하신 사항은 TRACE32@mdstec.com 으로 연락 부탁드립니다.</p> <p> </p> <p> </p> <p>"<strong><a href="/wiki/index.php/Cortex-M">TRACE32로 바라본 ARM - Cortex-M</a></strong>" 으로 돌아가기</p>
CBZ and CBNZ
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
행위
검색
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
도구
여기를 가리키는 문서
가리키는 글의 바뀜
특수 문서 목록
문서 정보