inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

반복문

마지막 예제에 대해 질문드립니다.

306

신우석

작성한 질문수 2

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
마지막 예제의 29분 40초 경
bool isEven = ((count % 2) == 0); 이라는 라인을 입력하게 되는데,
이렇게 되면 루프가 돌 때마다 변수의 값을 변경하는게 아닌,
isEven이라는 변수를 매번 선언하게 되는 것처럼 보입니다.
이 경우 별다른 문제는 없는 것인가요?
 
추가로 질문이 더 있는데, 이 부분을 디스어셈블리로 봤을 경우
마치 분기문처럼 어셈블리어가 이루어져 있더라구요. 이 부분은 ((count % 2) == 0)처럼 비교를 하는 부분이 있기 때문에 이해가 가는데,
중간에 dec와 or, inc가 나오는 라인은 왜 그런 것인지 이해가 되지 않습니다.
나머지를 구하는 연산의 경우 div 명령어를 사용하여 dx 레지스터에 저장된 나머지값을 가져오면 되는 것으로 이해하고 있습니다. 그렇게 하지 않는 것은 해당 컴파일러의 특성처럼 이해해도 될 것 같은데, 그것 외에 그냥 해당 instruction 자체가 이해가 가지 않아서, 이해를 돕고자 질문드립니다.
해당 어셈블리 부분 첨부합니다.
 
bool isEven = ((count % 2) == 0);
006924D0mov eax,dword ptr [ebp-44h]
006924D3 and eax,80000001h
006924D8 jns std::_Narrow_char_traits<char,int>::length+0Fh (06924DFh)
006924DA dec eax
006924DB or eax,0FFFFFFFEh
006924DE inc eax
006924DF test eax,eax
006924E1 jne std::_Narrow_char_traits<char,int>::length+1Fh (06924EFh)
006924E3 mov dword ptr [ebp-118h],1
006924ED jmp std::_Narrow_char_traits<char,int>::length+29h (06924F9h)
006924EF mov dword ptr [ebp-118h],0
006924F9 mov cl,byte ptr [ebp-118h]
006924FF mov byte ptr [ebp-4Dh],cl

C++

답변 1

0

Rookiss

bool isEven = ((count % 2) == 0); 이라는 라인을 입력하게 되는데,
이렇게 되면 루프가 돌 때마다 변수의 값을 변경하는게 아닌,
isEven이라는 변수를 매번 선언하게 되는 것처럼 보입니다.

이 경우 별다른 문제는 없는 것인가요?

네 상관없습니다.
생성자가 있는 class 타입이라면 기본 생성자가 루프마다 호출되니 동작이 다를 수 있지만,
bool의 경우 bool isEven으로 밖으로 빼도 동일하게 코드가 만들어집니다.

그리고  cout 등을 사용하면 어셈이 굉장히 복잡해지고

경우에 따라 잘못 표기되는 경우도 있으니 해당 부분을 빼고 다시 테스트 해보세요.

visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.

0

559

1

정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?

0

453

1

strcpy() 구현 관련 질문

0

535

1

빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?

0

475

1

클래스 타입의 포인터 질문합니다

0

559

1

입력값을 enum 값에 넣어주는거 이제 막혔나요?

0

503

1

템플릿 특수화 관련 질문

0

389

1

포인터 관련 질문합니다!

0

271

1

Unable to start assembler. Check your settings.

0

849

2

cpu선택

0

548

1

포인터 질문이 있습니다

0

331

1

20:35 에서 구조체 크기에 대한 질문입니다!

0

589

1

iterator 삭제관련

0

415

1

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

0

316

1

15 분 45초 대 질문

0

317

0

스택 프레임 질문합니다!

2

312

1

오른값 참조 in 게임

0

391

0

동적할당 질문이 있습니다

0

457

1

안녕하세요 메모리에 대해 질문드립니다.

0

312

1

함수객체 의 매개변수

0

365

1

복사생성자

0

439

1

main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요

0

430

1

포인터 실습 강의를 보고 궁금한게 있습니다.

0

359

1

스택 오버플로우

2

801

1