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

ms님의 프로필 이미지
ms

작성한 질문수

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

비교 연산과 논리 연산

어셈블리어 질문

작성

·

163

0

&& 연산을 어셈블리어로 볼 때

결과값인 0을 바로 [test] 에 넣지 않고 ebp, cl을 거쳐간 뒤에 저장하던데 그렇게 하는 이유를 알 수 있을까요?

[ebp]를 거쳐가는것 까지는 이해가 가는데 cl을 한번 더 거치는 이유가 궁금합니다.

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

mov 명령에서 양쪽 다 메모리 주소 접근일 수는 없습니다.
한쪽이 레지스터이고 한쪽이 메모리인 경우는 가능합니다.
mov [mem1] [mem2] << NO
mov reg, [mem] << OK
mov [mem], reg  << OK

그리고 모든 연관 관계를 파악하고 직접적으로
해당 변수에 넣어주고 하면 참 좋겠지만
컴파일러라고 완벽한 코드를 만들어주진 않습니다.
그래서 이렇게 temp값을 사용하는 경우는 자주 등장합니다.

ms님의 프로필 이미지
ms

작성한 질문수

질문하기