• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

어셈블리 배열 주소에 값 더할 때

21.03.24 22:40 작성 조회수 162

0

강의에서

PRINT_HEX 1, [a+ecx]

여기서 a에 더해줄 수 있는 값이 32bit 이상의 단위 값,

ecx, rcx 만 되고 그 밑의 포맷인 ax,ah,al은 오류가 나면서 안되더군요.

이유가 궁금합니다.

답변 1

답변을 작성해보세요.

0

PRINT_HEX 는 정식 어셈블리 문법이 아니라
그냥 편의상 툴에서 제공해주는 매크로입니다.
따라서 그냥 무시하고 넘어가셔도 됩니다.

그럼 PRINT 매크로를 사용하지 않고 직접 어셈블리로 구현할 경우에는 저 레지스터를 써도 정상 작동 되는건가요?

주소값에 더할 때, 더할 인자가 꼭 **이상이어야한다 같은 조건이 있는 건가 싶어서요

더불어 레지스터값이 아닌, .data에서 정의한 메모리 값으로 더해줘도 되는지 궁금합니다

보통 컴파일러에 의해 만들어진 코드는 eax나 rax로 하겠지만,
주소를 다룰 때 al 등 1바이트 레지스터로 하면 안 된다는 법은 없을겁니다.