|
2 | 2 |
|
3 | 3 | 프로그램을 여러 단위로 쪼갤 수 있는 방법인 함수에 대해 다루고, 함수를 사용하기 위한 개념들을 배웁니다.
|
4 | 4 |
|
5 | | -# 레지스터(register) |
| 5 | +## 레지스터(register) |
6 | 6 |
|
7 | 7 | 지금까지는 컴퓨터가 단순히 메모리와 연산장치가 있다고만 생각했었는데요, 사실 연산장치에도 계산하고 있는 값을 임시로 저장하기 위한 메모리가 하나 더 있습니다. 지금까지 우리가 다룬 주소값이 있는 메모리는 흔히 램이라고 부르는 `임의 접근 메모리(Random-access memory; RAM)`이고, 연산장치에 있는 계산 중인 값을 저장하기 위한 메모리는 `레지스터(register)`입니다.
|
8 | 8 |
|
|
13 | 13 | for문을 사용할 때, 다음 예제처럼 변수를 하나 선언한 후 반복식에서 변수의 값을 1 증가시키는 경우가 많습니다.
|
14 | 14 |
|
15 | 15 | ```c
|
16 | | -for (int i = 0; i < 5; ++i) ; |
| 16 | +#include <stdio.h> |
| 17 | + |
| 18 | +int main() |
| 19 | +{ |
| 20 | + int d; scanf("%d", &d); |
| 21 | + |
| 22 | + for (int i = 0; i < d; ++i) |
| 23 | + printf("%d ", i); |
| 24 | +} |
| 25 | +``` |
| 26 | + |
| 27 | +여기서 `i` 같은 변수를 `루프 카운터(loop counter)`라고 부르는데요, 레지스터에 고정되는 예시 중 하나입니다. `i`가 `ebx`라는 레지스터에 고정되고, `d`가 800\~804를 차지한다고 가정했을 때, 위 코드를 해석해보면, |
| 28 | + |
| 29 | +``` |
| 30 | +1. 800번을 d라고 이름짓습니다. |
| 31 | +2. 사용자의 입력을 받아 d가 차지하고 있는 공간에 정수를 넣습니다. |
| 32 | +3. ebx에 0을 집어넣습니다. |
| 33 | +4. ebx가 d에 들어있는 값보다 작으면 5로 이동하고, 아니면 for문을 종료합니다. |
| 34 | +5. ebx에 들어있는 값을 출력합니다. |
| 35 | +6. ebx에 들어있는 값을 1 증가시킵니다. |
| 36 | +7. 4로 이동합니다. |
17 | 37 | ```
|
18 | 38 |
|
19 | | -여기서 `i` 같은 변수를 `루프 카운터(loop counter)`라고 부르는데요, 레지스터에 고정되는 예시 중 하나입니다. |
| 39 | +이렇게 해석될 수 있습니다. |
0 commit comments