아래 .start 섹션을 정의하는 곳 부터가 코드 실제 시작위치로 알고 있습니다.
.section ".start", #alloc, #execinstr
--------------------------------------------------
.start 라는 섹션(?)을 정의하는데 #alloc은 allocatable을 의미하고 #execinstr은 executable을 의미한다. (구글검색)
즉, 할당?가능, 실행?가능 한 섹션 .start 를 정의한다.
[제가 이해한 내용 정리]
1) 섹션을 정의할때 사용하는 지시자는 .section 이다.
2) 섹션 명칭은 섹션 지시자 바로 다음에 쌍따옴표"" 로 감싸서 그 안에 있는 문자열로 한다.
.section ".start" 의 경우, 섹션 .start 를 정의함을 뜻한다.
3) 섹션 명칭 다음에 ,(콤마)로 구분하여 추가로 섹션의 특성? (할당, 실행)을 정의 한다.
[궁금한 내용]
*) 섹션 명칭은 반드시 .(마침표)로 시작해야 되는 것입니까?
*) 섹션 특성에 할당가능, 실행가능 이라는 것이 무엇인지 모르겠습니다. 어떻게 이해를 해야 될까요?
*) 검색 중 .section ".start", "ax" 도 동일한 의미를 지닌게 아닌가 하는 글을 보았습니다. 같은 의미 일까요?
(링크 : https://lkml.org/lkml/2003/4/15/201)
잘못 이해하고 있는 부분 이라던가 궁금한 내용 누가 좀 알려 주실까 해서 글 남겨 봅니다.
단 한줄의 코드만으로도 궁금한 내용이 밑도 끝도 없이 막 생겨나네요.
.
아래는 GAS manual의 일부입니다. 참고하시면 좋을 것 같습니다.
https://sourceware.org/binutils/docs/as/Section.html#Section
1.섹션 명칭은 반드시 .(마침표)로 시작해야 되는 것입니까?
--
잘 모르겠습니다.
2. 섹션 특성에 할당가능, 실행가능 이라는 것이 무엇인지 모르겠습니다. 어떻게 이해를 해야 될까요?
--
Allocatable 섹션이란 메모리에 로드가 되는 혹은 공간이 할당되는 섹션을 말합니다.
text, data, bss 등의 섹션이 allocatable이겠죠.
심볼테이블이라든지 디버그 섹션같은 것들은 메모리에 로드되지 않기 때문에 allocatable이지 않을 것 같네요.
Executable은 실행가능한 섹션으로 코드를 담고 있는 섹션입니다. Data 섹션은 executable하지 않겠죠.
3. 검색 중 .section ".start", "ax" 도 동일한 의미를 지닌게 아닌가 하는 글을 보았습니다. 같은 의미 일까요?
(링크 : https://lkml.org/lkml/2003/4/15/201)
--
GAS manual 링크를 보시면 .section 지시어는 여러 가지 형태가 가능합니다.
아마 같은 것인 듯 하네요.
잘못된 내용이 있으면 지적해주세요.