3.7 프로시저 프로시저 호출은 소프트웨어에서의 주요 추상화이다. 이들은 지정된 인자들과 리턴 값으로 특정 기능을 구현하는 코드를 감싸주는 방법을 제공한다. 프로시저는 서로 다른 프로그래밍 언어에서 함수, 메소드, 서브루틴, 핸들러 등 다른 모습으로 사용되지만 이 모두는 일반적인 특징들을 공유한다. 설명을 위해 프로시저 P가 Q를 호출하고, Q가 실행한 후에 다시 P로 리턴한다고 가정하자. 이러한 동작들은 다음과 같은 하나 이상의 메커니즘이 연관된다. 제어권 전달 프로그램 카운터는 입력 시 Q에 대한 코드의 시작 주소로 설정되고, 리턴할 때는 Q에 대한 호출에 이어 P의 인스트럭션으로 설정되어야 한다. 데이터 전달 P는 하나 이상의 매개변수를 Q에 제공할 수 있어야하며, Q는 다시 P로 하나의 값을 리턴..
3.6 제어문 기계어 코드에서는 조건부 동작을 구현하기 위해 두 개의 기본적인 row level의 방법을 제공한다. 보통 C와 기계어 코드의 인스트럭션들은 모두 프로그램에 나타나는 순서대로 순차적으로 실행된다. 기계어 인스트럭션들의 실행 순서는 점프(jump) 인스트럭션으로 변경할 수 있다. 점프 인스트럭션은 결과에 따라 프로그램의 다른 일부분으로 제어를 넘겨준다. 3.6.1 조건 코드 정수 레지스터들과 함께 최근 CPU는 가장 최근 산술 또는 논리연산의 특성을 설명하는 단일 비트 조건 코드로 구성된 레지스터들을 운영한다. CF: Carry Flag. 가장 최근의 연산에서 가장 중요한 비트로부터 받아 올림이 발생한 것을 표시 비부호형 연산에서 오버플로우를 검출할 때 사용 ZF: Zero Flag. 가장 ..
3. 프로그램의 기계 수준 표현 3.2 프로그램의 인코딩 gcc 명령은 소스 코드를 실행 코드로 변환하기 위해 일련의 프로그램들을 호출한다. C 전처리기가 #include로 명시된 파일을 코드에 삽입해 주고, #define으로 선언된 매크로를 확장해 준다. 두 개의 소스파일의 어셈블리 버전인 p1.s, p2.s를 생성한다. 어셈블러는 어셈블리 코드를 바이너리 목적 코드인 p1.o와 p2.o로 변환한다. 목적코드는 기계어 코드의 한 유형이다. 마지막으로 링커는 두 개의 목적코드 파일을 라이브러리 함수들을 구현한 코드와 함께 합쳐서 최종 실행파일인 p를 생성한다. 이것이 프로세서가 실행할 정확한 코드의 형태이다. 3.2.1 기계수준 코드 컴퓨터 시스템은 보다 간단한추상화 모델을 이용해서 세부 구현내용을 감추..
- Total
- Today
- Yesterday
- 이코테
- kafka
- mahout
- Flutter
- 프로그래머스
- cka
- BOJ
- heapq
- kubernetes
- OS
- 파이썬
- 네트워크
- elasticsaerch
- HDFS
- Espher
- 백준
- 빅데이터를지탱하는기술
- Algorithm
- Python
- CS
- CSAPP
- oozie
- sqoop
- DFS
- Hadoop
- logstash
- DP
- Elasticsearch
- GROK
- 빅데이터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |