[Week5 - CSAPP] 3.3 - 데이터의 형식

2025. 10. 17. 10:08CSAPP

이 절에서는 x86-64 시스템에서 사용되는 데이터 크기와 명칭을 다룬다.

 

Intel 아키텍처에서 ‘워드(word)’는 특정 길이의 데이터를 가리키며,

 

이때 워드는 16비트를 의미한다.

 

이에 따라

 

16비트는 워드(word),


32비트는 더블 워드(double word),


64비트는 쿼드 워드(quad word)라고 부른다.

 

이러한 명칭은 단순한 정의를 넘어서 어셈블리 명령어의 접미사로도 쓰인다.

 

예를 들어 데이터 이동 명령어 mov는 다음과 같은 접미사를 가진다.

movb ; 바이트(1B) 단위 이동
movw ; 워드(2B, 16비트) 단위 이동
movl ; 더블 워드(4B, 32비트) 단위 이동
movq ; 쿼드 워드(8B, 64비트) 단위 이동

 

여기서 l이 ‘double’의 d가 아니라 ‘long’의 l인 이유는,


역사적으로 32비트 시스템에서 C 언어의 long형이 32비트로 정의되었기 때문이다.

 

현재의 x86-64 시스템에서는 long형이 64비트로 구현된다.


즉, 예전의 long은 double word였지만,


지금의 long은 quad word에 대응한다.

 

추가로, C 언어의 기본 자료형과 어셈블리에서 사용되는 데이터 크기의 관계는 다음과 같다

C 자료형바이트 수어셈블리 명칭예시 접미사

 

char 1 byte movb
short 2 word movw
int 4 double word movl
long / pointer 8 quad word movq
float 4 single precision
double 8 double precision

이 절의 핵심은,


x86-64에서 데이터 크기·명칭·C 타입·어셈블리 표기가 어떻게 연결되는지를 이해하는 것이다.

 

이번글은 내가 어떻게 재밌게 써야할지도 모르겠고...

 

내용도 너무 간단해서 그냥 썼다. 

 

추천곡을 쓰는것이 조금 찐따 같다는 피드백이 있어서, 이제 추천곡은 안올릴려고 한다...ㅠㅠㅠ

 

즐코딩.