혼자 정리
[CSAPP] 3.3 데이터의 형식 본문
- 기본적으로 '워드(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 | 8 |
위의 꼬리문자는 인스트럭션의 오퍼랜드의 크기를 나타내준다.
ex) movb
(바이트 이동), movw
(워드 이동), movl
(더블워드 이동), movq
(쿼드워드 이동)
- 주의할 점은 접미 문자
l
을 4바이트 정수 말고도 8바이트 이중정밀도 부동소수점 자료에도 사용한다는 점. 하지만 서로 쓰이는 인스트럭션과 레지스터가 다르기 때문에 혼동되지는 않는다.
'CSAPP정리' 카테고리의 다른 글
[CSAPP] 3.4 정보 접근하기 ~ 3.5 산술연산과 논리연산 (0) | 2021.06.22 |
---|---|
[CSAPP] 3.2 프로그램의 인코딩(Program Encodings) (0) | 2021.06.22 |
[CSAPP] 3. Machine-Level Representation of Programs ~ 3.1 A Historical Perspective (0) | 2021.06.21 |
[CSAPP] 2.2 정수의 표시(Ch. 2 정보의 표현과 처리) (0) | 2021.04.04 |
[CSAPP] 2.1 정보의 저장(Ch. 2 정보의 표현과 처리) (0) | 2021.04.03 |