| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 42
- django #ninja #django-ninja #장고
- 네스트JS
- Spring
- nestjs
- Born2beroot #42
- Daemon
- ecole42
- 데이터중심애플리케이션설계
- dockerd
- Spring-Boot
- pipex
- docker
- 42Seoul
- data-root
Archives
- Today
- Total
혼자 정리
[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 |