○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

+ Recent posts