○Assembly - Structure
▷Structure: 서로 다른 Type을 가진 변수들의 집합
▷연속된 메모리 공간을 차지함.
▷변수가 선언된 순서대로 메모리를 차지.
▷각 변수가 차지하는 크기가 일정하지 않음. -> 컴파일러가 offset을 계산해야함.
▶Memory Alignment
▶기본 데이터 타입이 K 바이트가 필요하다면, Address는 K의 배수여야 한다.
▷1 byte: char, ...
▷2 bytes: short, ...
▷4 bytes: int, float, ...
▷8 bytes: double, long, char*, ..
▷16 bytes: long double(GCC on linux)
▷메모리는 데이터를 4/8바이트를 블록으로 묶어 가져온다.
▷Align되어있지 않다면, 4/8바이트의 데이터를 위해 2개의 블록을 가져와야할 수 있다. -> 속도 저하
▷변수의 선언 순서에 따라 차지하는 크기가 다를 수 있다. -> 큰 크기의 데이터부터 넣는게 가장 크기가 작다.
▷Structure에서 가장 큰 Alignment Requirement가 K라면, Structure의 시작 주소는 K의 배수여야 한다.
▷Structure의 배열에서도 각 원소에 대해 적용된다.
▶Memory Accessing
▷멤버 변수의 위치를 계산해서 접근
▷구조체 배열인경우, 배열 위치 + 구조체크기*index + 멤버 변수 위치로 계산
'컴퓨터 지식 > 시스템' 카테고리의 다른 글
Memory Layout (0) | 2020.11.05 |
---|---|
Assembly - Floating Point (0) | 2020.11.03 |
Assembly - Array (0) | 2020.10.29 |
Assembly - Procedure (0) | 2020.10.28 |
Assembly-Control (0) | 2020.10.13 |