○Assembly - Array
▷T A[L]: T 타입의 길이가 L인 배열
▷L*sizeof(T) 바이트만큼 연속적인 공간 차지
▷A - indentifier: 배열의 가장 첫 원소를 가리키는 포인터
▶Accessing
▷A[i] = *(A+i)
▷주소: A + i*K (K: 요소의 바이트 크기)
▷%rdi = A, %rsi = i, 요소 크기 = K일때 (%rdi, %rsi, K)
▶Multidimensional Arrays (다차원 배열)
▷T A[R][C]: T타입의 원소가 R행, C열을 가지는 배열.
▷중첩(Nested)을 활용
▷R*C*sizeof(T) 바이트만큼 연속적인 공간 차지.
▷n차원 배열: n-1차원 배열을 원소로 하는 배열
▶다차원 배열 Accessing
▷원소의 크기가 K이고, 행의 크기가 C일때
▷A[i][j] = *(*(A+i)+j) = *((int*)A+i*C+j) = Mem[A+i*(C*K)+j*K]
▷주소: A + (i*C + j) * K
▶Multi-Level Array (배열을 가리키는 포인터의 배열)
▷int* A[L] = {a, b, c};
▷포인터 배열의 원소가 다른 배열을 가리킴.
▷접근: A[i][j] = *(*(A+i)+j) = Mem[ Mem[A[8*i] + K*j ]
▷여러 번의 메모리 접근 필요.
※포인터, 변수 비교
▶배열과 포인터
▷A1: 길이가 3인 int형 배열
▷A2: int를 가리키는 포인터
▶포인터 배열, 배열을 가리키는 포인터
▷A1: 길이가 3인 int형 배열
▷A2: 길이가 3인 int 포인터형 배열 (각각 가리키는 int는 할당되지 않음)
▷A3: 길이가 3인 int형 배열을 가리키는 포인터 (int 배열은 할당되지 않음)
'컴퓨터 지식 > 시스템' 카테고리의 다른 글
Assembly - Floating Point (0) | 2020.11.03 |
---|---|
Assembly - Structure (0) | 2020.11.03 |
Assembly - Procedure (0) | 2020.10.28 |
Assembly-Control (0) | 2020.10.13 |
Assembly (0) | 2020.10.07 |