좀 생뚱맞은 질문입니다 ARM 계열이구요 전기 충격에 의해 제품이 버티는지 시험하는 중에 hardfault가 발생했는데요 PC(program counter)랑 LR(link, subroutine call return address) 값이 동일하게 나왔는데 이게 일반적인 코드 작성으로 가능한 상황인가요???
(어셈블리로는 쉽게 가능하고, C 에선 재귀호출 지점에서 같아지지 않을까요 ? 머리아프...)
LR 은 전용 레지스터가 아니라 편의상 R14(?) 를 서로 약속하고 쓰는 것 뿐이니 호출된 함수에서 LR 을 스택에 push 하고 다른 용도로 사용해도 상관없습니다. 돌아가기 전에 pop 을 하기만하면.
추측을 하자면 끝이 없으니, 알려준 PC 를 이용해서 코드를 찾아가 LR 에 PC 가 들어가게 되어 있는지 보면 되겠습니다.
감사합니다
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
어셈블리로는 쉽게 가능하고, C 에선 재귀호출
(어셈블리로는 쉽게 가능하고, C 에선 재귀호출 지점에서 같아지지 않을까요 ? 머리아프...)
LR 은 전용 레지스터가 아니라 편의상 R14(?) 를 서로 약속하고 쓰는 것 뿐이니 호출된 함수에서 LR 을 스택에 push 하고 다른 용도로 사용해도 상관없습니다.
돌아가기 전에 pop 을 하기만하면.
추측을 하자면 끝이 없으니, 알려준 PC 를 이용해서 코드를 찾아가 LR 에 PC 가 들어가게 되어 있는지 보면 되겠습니다.
감사합니다
감사합니다
댓글 달기