Written by
n0fate
on
on
ARMv5TE7의 바이트 정렬 크기
요즘 임베디드 쪽 삽질 동기부여를 위해 강의를 하나 듣고 있다.
대부분이 인텔 아키텍처와 상당히 유사해서 100 중 30정도만 듣다가, 심심한차에 ARM의 바이트 정렬은 몇 바이트를 기준으로 하는지가 궁금해졌다. 테스트에서 사용하는 머신이 32비트 ARM 코어(ARMv5TE7)이다보니 인텔과 같이 4바이트 일 것 같긴한데, 증명 차원에서 예제 코드를 작성하여 확인하였다.
개발 툴킷은 ARM Software Development Toolkit(SDT)를 사용하였다.
샘플 코드는 다음과 같다.
#include
typedef struct _test{
char ch;
int data;
} TEST;
int main(void)
{
TEST test;
test.ch = 'c';
test.data = 3;
printf("size: 0x%pn", &(test.ch));
printf("size: 0x%pn", &(test.data));
}
간단하게 구조체 내의 두 바이트의 주소를 확인하는 코드이다. 구조체를 전역으로 선언한게 아니기 때문에 해당 구조체는 스택에 할당될 것이다.
디버거를 통해 확인하였다.
역시 예상대로 4바이트 정렬을 사용한다 :-)
n0fate's Forensic Space :)