일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 유럽비자
- 코딩
- 아포스티유
- Linux
- exchange student
- 교환학생
- Programming
- 건강진단서
- 윈도우프로그래밍 #cmd #명령프롬프트 #윈도우ls #윈도우echo #윈도우export
- 루벤대학교
- ARM #ARMtrustzone #trustzone #TEE #secureOS
- 벨기에 교환학생
- 파운드리 #TSMC #팹리스 #삼성파운드리 #DB하이텍
- 벨기에비자
- 벨기에
- 비자
- 어셈블리어
- 리눅스
- eramus student
- 우분투
- 명령어
- KU leuven
- Today
- Total
더 나은 세상
object 파일이란 본문
이번에 게시할 내용은 compiler를 공부하면서 그동안 몰랐었던 내용과 헷갈렸던 부분을 다시 확인하기 위해서에요.
compiler를 처음 알았던건 대학교 1학년 첫 수업시간에 visual studio라는 프로그램을 교수님이 설명을 하면서 들었어요
compiler는 넓게 이야기하면 한 언어에서 다른 언어로 바꿔주는 것을 말하고
프로그램의 실행에 관해서 이야기할 때는 c나 java같은 high level언어에서 assembly언어로 바꿔주는 것을 말해요
우리의 눈에는 cout이나 printf같은 함수가 출력을 의미한다는 걸로 보이지만 컴퓨터 입장에서는 무슨 소리인지 알 지 못해요.
그래서 0과 1로 바꿔 주어야 하는데 그 과정중에 있는게 compiler라고 합니다.
assembly언어는 아직 컴퓨터가 이해하지 못하는 언어이지만 한단계만 더 거친다면 0과 1로 이루어진 언어로 바꿔줄 수 있어요
이 과정을 assembling이라고 하는데 이 역할은 assembler라는게 도와줘요
요약하자면 우리가 짠 helloworld.cpp를 compiler가 assembly로 바꿔주고 이를 assembler가 0,1로 이루어진 언어로 바꿔줘요
그리고 0,1로 이루어진 언어를 object파일이라고 불러요
오브젝트 파일의 메모리는 4가지 영역으로 나뉘는데 stack, heap, static, code라는 이름을 가지고 있어요. code영역부터 0으로 주소가 시작하는데 만약 linker가 여러개의 object파일을 하나의 exe파일로 만들경우 exe파일의 메모리도 똑같이 4가지 영역을 나누어지게 돼고 이를 relocation이라는 용어로 부르게 됩니다.
stack은 지역변수 heap은 동적할당, static은 전역변수(global var), code는 변수이름을 가지고 있어요
'컴퓨터 프로그래밍' 카테고리의 다른 글
CVE-11176(1) (0) | 2019.03.30 |
---|---|
exe파일이란 무엇인가요? (0) | 2018.12.16 |
virtual address(가상주소)와 physical address(실제주소) (1) | 2018.09.29 |
[리눅스명령어]disass (0) | 2018.06.21 |
LSB,MSB(Least, Most Significant Byte)와 빅엔디언, 리틀엔디언(Big endian, little endian) (0) | 2018.06.21 |