Sections
• 모든 x86_64 어셈블리 파일에는 ".data"섹션, ".bss"섹션 및 ".text"섹션의 세 섹션이 있다.
• 데이터 섹션은 초기화 된 데이터가 컴파일되기 전에 정의되는 곳이다.
• bss 섹션은 나중에 사용할 수 있도록 초기화 하지 않은 데이터가 할당되는 섹션이다.(0으로 초기화 된 값은 여기에 위치한다)
• 텍스트 섹션은 실제 코드가 있다.
Labels
• "레이블"은 코드의 일부에 레이블을 지정하는 데 사용된다.
• 컴파일시 컴파일러는 레이블이 메모리에 있을 위치를 계산한다.
• 나중에 레이블의 이름이 사용될 때마다 컴파일러가 해당 이름을 메모리의 위치로 대체한다.
“Start” Label
• "_start"레이블은 모든 프로그램에 필수적이다. (예전 이 사실을 몰라다. 이 부분 때문에 아마 임베디드 쪽에 관심을 같게 된 것으로 보인다.)
• 프로그램을 컴파일하고 나중에 실행하면 "_start"위치에서 먼저 실행 한다.
• 링커가 "_start"를 찾을 수 없으면 오류가 발생한다.
Global
• 링커가 레이블의 주소를 알 수있게 하려면 "global"이라는 단어를 사용한다.
• 생성 된 오브젝트 파일에는 "global"으로 선언 된 모든 레이블에 대한 링크가 포함된다.
• 현재 예제에서 사용되는 코드가 제대로 링크 되어야 하므로 "_start"를 전역으로 선언 한다.
댓글 없음:
댓글 쓰기