ARM Instruction 에서 stm와 ldm의 addressing mode에 대해 질문드려요~
글쓴이: tomahawk28 / 작성시간: 월, 2008/06/23 - 4:22오후
프로그램 소스 보던중에 의문이 생겼는데 Non-stack mode 일때는 addressing mode가
IA(icrement after) ,IB(icrement before) , DB(decrement before), DA(decrement after)
이렇게 있는데요
STMDB로 활용할때는 해당 레지스터에 넣거나 빼기 전에 일단 주소부터 -4를 해주고 들어가던데
STMIA를 쓸때의 결과는 어떨지 모르겠네요 스택이 감소하는 방향으로 늘어난다고 알고있는데..
이 경우에는 해당 레지스터에 넣고 뺀 "다음" 주소를 감소하는 방향이 아닌 위쪽으로 +4 시켜주는 건가요?
나빌레라 님의 강좌를 보니 태스크 콘트롤 블록이..
typedef struct __task_control_block{ \t int temp1; \t int temp2; }
이렇게 되어있을때 temp1에 해당하는 값을 stmia로 넣어주면 자동으로 그 주소는 temp2를 넣어줄 주소로 옮겨와있다고
하더군요.. 그러면 구조체의 입장에서는 하나 "낮춰"들어가야하는건데 주소를 "높여"들어가면 서로 다른게 아닌가요?
미진한 실력으로... 질문이 해결되지가않네요.. Reference manual이 익숙치가 않아서..
답변 주시면 감사하겠습니다~ ^_^
Forums:
댓글 달기