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

박종호님의 프로필 이미지

작성한 질문수

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

s302_비교와 분기 명령어

#if 라인이 아예 실행이 안됩니다 ,,,

작성

·

205

1

비교기 예제를 테스트하고 있는데요.

비교기 예제를 활성화 하기 위해서

#if 1

#endif

이렇게 만들었습니다만

 

실행을 하면 HELLO, STM32 말고는 아무것도 나오지 않습니다.

 

Do you see this line? 도 나오지 않구요 ,,,

 

비교기 코드를 if 절 밖으로 빼내니까 작동을 하네요 ,,

 

혹시 뭔가 셋팅이 필요한가요 ??

 

답변 1

0

박종호님의 프로필 이미지
박종호
질문자

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

안녕하세요. 박종호님

어셈블리 강의에서 다루는 주제별 실습 마다 #if 0 을 조정하는 방식으로 만들어져 있습니다.

s302_비교와 분기 명령어 수업에 사용된 실습은 아래 내용을 참고하시면 좋겠습니다.

	/*
	 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	 *   FROM HERE WE WILL TEST ARM INSTRUCTION
	 */
  // AAPCS(Procedure Call Standard for ARM Architecture)
	// r0,r1,r2,r3 : scratch(temporary) register
  // r0 : return value
#if 0  <-------------------------------------------------------- 이 부분 확인
	{
  	/* ex1. call assembly function */
  	printf("result=%d\n", FIRST_ASM_FUNC(7,8,9,10,11,12));
  	printf("do you see this line? \n");
	}
#endif

#if 0  <-------------------------------------------------------- 이 부분 확인
	{
	   /* actual initialization */
	   char a8 = 10;
	   char b8 = 20;
	   char sum8;

	   int a32 = 10;
	   int b32 = 20;
	   int sum32;

	   /* function returning add two numbers */
	   printf("ex2. add two numbers\n");

	   sum8= ADD8(a8, b8); // sum8 = a8 + b8
	   printf("value of char c : %d (must 30) \n", sum8);

	   sum32= ADD32(a32, b32); // sum32 = a32 + b32
	   printf("value of int c : %d (must 30) \n", sum32);
	   __BKPT(0);
	}
#endif

#if 1  <-------------------------------------------------------- 이 부분 확인
	{
		/* actual initialization */
		volatile int result;
		int a=34;
		int b=100;

		/* function returning the max between two numbers */
		printf("ex3. get max value\n");

		result = max(a, b);
		printf("Max value is : %d (must 100)\n", result);
		result = max2(b, a);
		printf("Max2 value is : %d (must 100)\n", result);
		__BKPT(0);
	}
#endif
박종호님의 프로필 이미지
박종호
질문자

image

넵 if절은 확인했습니다만, 이 상태로는 if절 내 코드들이 아예 실행되지 않습니다 ,,

 

Do you see this line 위, FIRST_ASM_FUNC(); 이 코드를 주석 처리 한 뒤로 정상적으로 실행이 됩니다,,

 

FIRST_ASM_FUNC(); 이 코드의 역할이 무엇인가요 ?? 없어도 되는 코드일까요 ??

 

image

image

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

박종호님이 질문하신 내용은 영상물( s211_AAPCS ) 속에 있습니다.

박종호님의 개인 시청 기록을 조회해 보니 이 영상을 시청하시지 않은 것으로 확인됩니다(혹시 제가 잘못 알고 있다면 지적 부탁드립니다)
본 강좌는 수강자의 이해도를 높이기 위해 개별 강의 트랙의 순서를 배치한 것이기 때문에 어떤 트랙을 임의로 스킵하거나, 혹은 순서를 바꾸어서 시청할 경우 이해도 저하가 발생될 수 있습니다.

가급적이면 영상을 순서대로 시청하시는 것을 강력 추천드릴게요. ^^
추가 질문하실 내용이 있으면 언제든 글 남겨주세요. 최대한 빠르게 답변드리겠습니다.