간단한 어셈블리 질문입니다.
조회수 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 자료형으로 확장시키는 명령어라고 하는데, 이 코드에서 구체적으로 어떤 변수의 자료형을 늘리는 건가요?
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력