Re: 앞 4바이트를 점프시킨다는말이 무슨뜻인가요?

홈 > 커뮤니티 > 질문 게시판
질문 게시판

Re: 앞 4바이트를 점프시킨다는말이 무슨뜻인가요?

M LIN 5 5135

7d927d0503c77d8b570ca4ba3e3b8c97_1573356506_2619.PNG

"ldr pc, [pc, #-4]" 인스트럭션 앞 4바이트 주소가 이동할(점프시킬) 어드레스 위치입니다.


> > > "ldr pc, [pc, #-4]"인스트럭션을 이용하여 앞 4바이트를 점프시킵니다. 라고해서 기존 어드레스 주소가 점프되어서 다른 어드레스를 린님이 말씀하시던데 어떻게 계산해서 점프된 어드레스 주소를 아나요? > > 정말 기초적인 질문 죄송합니다 ㅠㅠ > >

5 Comments
3 첼시맨 2019.11.10 16:21  
흑흑 그림까지 첨부하시면서 설명해주시다니 ㅠㅠ 감사합니다. 이건 다른분들도 봤으면 좋겠네요.
M LIN 2019.11.10 23:49  
아닙니다ㅎㅎ 도움이 되셨기를
6 Haclthesoul 2019.11.11 11:02  
Quoting from section 4.9.4 of the ARM Instruction Set document (ARM DDI 0029E):
When using R15 as the base register you must remember it contains an address 8 bytes on from the address of the current instruction.

So that instruction will load the word located 4 bytes after the current instruction, which hopefully contains a valid address.

ARM 공식문서에서 R15(PC)로 쓰게되면 PC에는 현재 인스트럭션의 주소로부터 8바이트를 가지고 있다라고 나옵니다.
그러므로 실제 LDR PC, PC #-4를 해야지 8-4 = 4 byte가 실제 점프를 주소가 PC에 저장이 된다고 보시면됩니다.
2 붉은돌 2020.09.02 01:25  
이해가 조금 더 필요해서 볼려고 스크랩 합니다. 감사합니다.
1 적토마 2020.09.02 12:40  
감사합니다.