Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Programming Compile & Loading for Korean

No description
by

용우 유

on 3 December 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Programming Compile & Loading for Korean

DLL?
고급언어는 어떻게
실행파일이 될까?

영역?
: 프로그램의
소스코드가 저장
된다.
: 상수, STATIC 변수, 문자열 등

고정되는 값들이 저장
되어 있다.
:
크기가 가변
한다.

프로그래머의 필요에 따라 할당
하여 사용할 수 있다.
:
크기가 가변
한다. 지역변수가 저장된다.
스택에는 여러개의
스택 프레임
이 존재한다.
: 어떤 함수가 호출되었을 때
그 함수가 가지는 공간 구조
기계어?
IT FORUM
1991년 4월 경상북도 안동에서 외동으로 태어남
5살때 처음으로 컴퓨터를 만져봄 (1995년)
11살때 외삼촌 컴퓨터를 고장내서 맞음 (2001년)
나만의 Intel Celeon PC가 생김 (2001년)
나의 첫 자격증 워드2급과 컴활3급을 취득함 (2002년)
포토샵으로 외삼촌의 인터넷 쇼핑몰을 도와줌 (2004년)
화면에 'HELLO WORLD'를 처음으로 출력함 (2007년)
처음으로 프로그래밍 대회에서 입상을 함 (2008년)
가톨릭대학교 컴퓨터정보공학부 10학번으로 입학함 (2010년)
입대 ㅜ.ㅜ (2011년), 그리고 전역 ^.^ (2013년 4월)
월드프렌즈 IT 협력 해외봉사 (몽골 UB대학, 2013년 7월)
CAT-SECURITY Junior로 활동 중임 (현재)
유용우(YoWu)
고급언어의 컴파일과 프로그램의 로딩
순 서
정보 나눔 목표
발표자 소개
고급언어는 어떻게 실행파일이 될까?
고급언어, 어셈블리어, 기계어란?
컴파일러, 어셈블러, 링커란?
고급언어가 실행파일이 되기 까지
그럼 프로그램은 어떻게 실행되는 걸까?
로더와 그가 하는일
메모리는 알겠고.. 스택과 스택 프레임이 뭐지?
메모리에 영역도 있다고?
프로그램은 메모리에 이렇게 로드된다
QnA
가톨릭대학교 CSIE 2학년 201021395
유용우

정보 나눔의 목표
무언가 거창하고 새로운것을 발표하기 보다는
나와 같은 학부생이 컴퓨터를 전공하는데에 있어
꼭 알면 좋겠다고 생각하는 것을 담았습니다.

소스파일 컴파일에 관한 내용과
프로그램을 실행시 어떻게 메모리에 로드되고
어떻게 실행 되는지에 대해 간략하게나마
발표하려고 합니다.

아직 학년이 낮습니다. 부족한 부분이 있더라도
너그러이 양해해 주시면 감사하겠습니다. - 유용우
그럼 프로그램은 어떻게
실행되는 걸까?

http://goo.gl/
0hvXe8QnA
고급언어?
어셈블리어?
컴파일러?
어셈블러?
링커?
라이브러리?
Stdio.h!
로더?
메모리?
스택?
High-level Language
사람이 알기쉽도록
씌어진 프로그래밍 언어

C, C++, JAVA, BASIC 등
C Language !
저급언어?
Low-level Language
컴퓨터 내부에서 바로 처리가능
한 프로그래밍 언어

어셈블리어, 기계어
Assembly어
기계어와
1:1 대응
이 가능
CPU마다 지원하는 타입과 개수는 제각각
Machine Language
CPU가 직접
읽고 실행할 수 있는 언어
프로그램을 나타내는
가장 낮은 단계의 개념
0
or
1
로만 구성
CPU의 종류에 따라 다른 구조
Hello Wolrd 프로그램 일부를 기계어로 번역
컴파일러(Compiler)
어셈블러(Assembler)
고급언어 어셈블리어
어셈블리어 기계어
컴파일러
어셈블러
흔히 이 컴파일러, 어셈블러를 사용해
기계어로 번역하는 과정을
컴파일(Compile)
이라고 부르며
목적 프로그램(*.obj)이 생성
소스
코드
기계어
코드
실행
프로그램
컴파일
??
목적 프로그램(*.obj)와
라이브러리
를 결합
표준입출력과 관련된 함수 :
printf... scanf... gets... etcetc..
즉, 라이브러리란.
자주 쓰는 부분 프로그램
을 묶어둔 것.
소스코드 컴파일 과정
소스코드
(고급언어)
기계어 코드
(목적 ~)
실행파일
(로드모듈)
컴파일
링킹
(hello.c)
(hello.obj)
(hello.exe)
(hello.exe)
RAM
(Random Access Memory)
메모리 상에서 프로그램은
스택
의 형태로 구현
F
irst
i
n,
L
ast
o
ut
L
ast
i
n,
F
irst
o
ut
STACK
PUSH : STORE
POP : LOAD

처음으로 들어온 것이
가장 마지막에 나오게 된다.
(FILO)

마지막으로 들어온 것이
가장 먼저 나오게된다.
(LIFO)
메모리에 데이터가 스택 구조로
저장될 때의 데이터 분류 방식
1. 로더가 프로그램의 헤더 정보를 읽어와 공간을 할당
로딩
LOAD
"hello.exe"
to Memory
사용가능한 전체
메모리 공간
CODE
STATIC
HEAP
STACK
+ stdio.h 의 코드
1."HELLO %s\n"
2. "WORLD!"
1. main() 스택 프레임
2. printf() 스택 프레임
main()을 호출 한 함수의 스택 프레임
main()의 스택 프레임
printf()의 스택 프레임
printf()의 종료
printf()를 호출한 main()으로 복귀
main()의 종료
main()을 호출한 함수로 복귀
프로그램 종료
END.
THANK YOU

uyu423@gmail.com
참고수업 : 컴퓨터구조
시스템 소프트웨어 실습
참고모임 : 캣시큐리티 C 스터디
캣시큐리티 시스템 스터디
참고매체 : 인터넷
테스트환경 : openSUSE Linux
DLL?
SLL?
(ref)(*.dll)
AT&T 계열(GNU) 어셈블러
Intel 계열(MASM) 어셈블러
Loader
보조기억장치의 프로그램을
주기억장치로 옮긴다.
로더의 기본적인 4가지 기능
할당
연결
재배치
적재
할당(Allocation)
프로그램의 헤더 정보를 읽어
메모리상에 필요한 공간을 확보
연결(Linking)
부 프로그램의 호출시
시작 주소를 호출된 지점과 연결
재배치(Relocation)
프로그램 내부의 상대주소를 메모리에 맞게
절대주소로 변경
적재(Loading)
프로그램을 할당받은 메모리 공간으로
이동
실행파일
(로드모듈)
2. 실제 프로그램과 데이터를
할당된 메모리 공간으로.
헤더(Header)파일
DLL(Dynamic-Link Libray)
라이브러리를 실행 파일에 포함하지 않고
실행 파일 외부에 두어
필요시에만 참조
Full transcript