3.10 기계수준 프로그램에서 제어와 데이터의 결합 데이터와 자료가 상호작용하는 방식을 살펴본다. 포인터 이해하기 GDB 사용한 검토 버퍼 오버플로우 스택 저장공간의 양이 실행때마다 달라지는 경우를 기계수준 프로그램이 어떻게 구현하는지 3.10.1 포인터 이해하기 포인터는 C 프로그래밍 언어에서 핵심 특징이다. 이들은 다른 자료구조 내 원소들에 대한 참조를 생성하는 통일된 방법으로서의 역할을 수행한다. 포인터는 연관된 자료형을 갖는다. 이 자료형은 어떤 종류의 객체를 이 포인터가 가리키는가를 의미한다. 예를 들어 int *ip; char **cpp; 변수 ip는 int형 객체로의 포인터지만, cpp는 자기 자신이 char형 객체의 포인터인 객체를 가리키는 포인터이다. 일반적으로 객체가 자료형 T를 갖고 ..
3.9 이기종(Heterogeneous) 자료구조 C는 서로 다른 유형의 객체를 연결해서 자료형을 만드는 두 가지 방법을 제공한다. struct: 구조체. 다수의 객체를 하나의 단위로 연결한다. union: 공용체. 하나의 객체를 여러 개의 다른 자료형을 참조될 수 있도록 한다. 3.9.1 구조체 C struct 선언은 서로 다른 유형의 객체들을 하나의 객체로 묶어주는 자료형을 생성한다. 하나의 구조체 내의 서로 다른 컴포넌트들은 이름을 이용해서 참조된다. 구조체의 모든 컴포넌트들이 메모리의 연속된 영역에 저장되며, 구조체의 포인터가 첫 번째 바이트의 주소라는 점에서 배열과 유사하다. 다음의 예를 살펴보자. struct rec { int i; int j; int a[2]; int *p; } 이 구조체는 ..
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. 가장 ..
- Total
- Today
- Yesterday
- 백준
- Algorithm
- Hadoop
- 빅데이터
- Python
- BOJ
- DP
- logstash
- mahout
- DFS
- cka
- 파이썬
- elasticsaerch
- Flutter
- Espher
- heapq
- kubernetes
- 프로그래머스
- CSAPP
- 이코테
- kafka
- 빅데이터를지탱하는기술
- OS
- oozie
- GROK
- CS
- HDFS
- 네트워크
- sqoop
- Elasticsearch
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |