간단한 어셈블리 질문입니다.

조회수 685회
#include <stdio.h>

int main() {
    int a = 20;
    int b = 10;

    int r = a / b; (#)

    printf("%d\n", r);

    return 0;
}

여기서 # 부분을 디스어셈블하면 아래와 같습니다.

int r = a / b;
    0x8000660 mov -0xc(%rbp),%eax
    0x8000663 cltd
    0x8000664 idivl -0x8(%rbp)
    0x8000667 mov %eax,-0x4(%rbp)

다른 것은 다 이해가 가는데 cltd라는 명령어가 조금 이해가 어렵네요. 인터넷에 찾아보니 4바이트 long 자료형을 8바이트 double 자료형으로 확장시키는 명령어라고 하는데, 이 코드에서 구체적으로 어떤 변수의 자료형을 늘리는 건가요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)