혼자 정리

[CSAPP] 3.3 데이터의 형식 본문

CSAPP정리

[CSAPP] 3.3 데이터의 형식

tbonelee 2021. 6. 22. 12:27
  • 기본적으로 '워드(word)'는 16비트 데이터 타입을 지칭(처음에 16비트 구조를 사용하다 32비트로 확장했기 때문)
  • 32비트는 '더블워드(double-word)'
  • 64비트는 '쿼드워드(quad-word)'

아래 표는 C 기본 데이터 타입에 사용되는 x86-64 표현을 보여줌.

  • 표준 int값은 더블워드로 저장(32비트=4바이트)
  • 포인터는 64비트 머신에서 8바이트 쿼드워드로 저장.
  • x86-64에서 long은 64비트(=8바이트)로 구현
C 선언 인텔 자료형 어셈블리코드 접미문자(suffix;꼬리 문자) 사이즈 (바이트)
char Byte b 1
short Word w 2
int Double word l 4
long Quad word q 8
char * Quad word q 8
float Single precision s 4
double Double precision l 8

위의 꼬리문자는 인스트럭션의 오퍼랜드의 크기를 나타내준다.
ex) movb(바이트 이동), movw(워드 이동), movl(더블워드 이동), movq(쿼드워드 이동)

  • 주의할 점은 접미 문자 l을 4바이트 정수 말고도 8바이트 이중정밀도 부동소수점 자료에도 사용한다는 점. 하지만 서로 쓰이는 인스트럭션과 레지스터가 다르기 때문에 혼동되지는 않는다.