인프런 커뮤니티 질문&답변

김상현님의 프로필 이미지
김상현

작성한 질문수

ARM Cortex-M 프로세서 프로그래밍

s304_IT 명령어

AAPCS 관련 질문 드립니다.

해결된 질문

작성

·

576

1

안녕하세요. 강사님.

강의 잘 보고있습니다.

실습 진행 중 궁금한게 있어서 질문 남깁니다.

아래 그림은 result = max(b, a); 를 실행하기 전 레지스터입니다.

아래 그림은 max 어셈블리 함수 내용입니다.

bx lr가 실행되기 전까지 레지스터 상태를 보면 별 문제 없어보이는데요.

문제는 저 라인이 실행한 후입니다.

레지스터 셋을 보시면 갑자기 r3값이 변하는 것을 확인할 수 있습니다. AAPCS를 보면 result값은 r0 또는 r1인데 말이죠.

제 함수에 문제가 있어보이지는 않는데 무엇이 문제인지 혹시 알 수 있을까요?

 

답변 2

0

홍영기님의 프로필 이미지
홍영기
지식공유자

해결되셨다니 축하드립니다!

디스어셈블리 창에서 얻을 수 있는 정보가 많습니다.

0

김상현님의 프로필 이미지
김상현
질문자

해결했습니다.

disassembly로 확인해보니 max 함수 호출 후에 r0 값을 r3에 복사하네요.

김상현님의 프로필 이미지
김상현

작성한 질문수

질문하기