You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 8-functions/README.md
+13-2Lines changed: 13 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,7 +57,7 @@ int main()
57
57
2. 사용자의 입력을 받아 d가 차지하고 있는 공간에 정수를 넣습니다.
58
58
3. 레지스터 ebx에 0을 집어넣습니다.
59
59
4. 레지스터 ecx에 d의 값을 집어넣습니다.
60
-
5. ebx < ecx의 결과가 1이면 6로 이동하고, 아니면 for문을 종료합니다.
60
+
5. ebx < ecx의 결과가 1이면 7로 이동하고, 아니면 for문을 종료합니다.
61
61
6. ebx에 들어있는 값을 출력합니다.
62
62
7. ebx에 들어있는 값을 1 증가시킵니다.
63
63
8. 5로 이동합니다.
@@ -67,6 +67,8 @@ int main()
67
67
68
68
> 인텔과 AMD에서 생산하는 CPU는 x86 CPU라고 불리는데요, eax, ebx, ecx 등은 x86 CPU의 범용 레지스터들입니다.
69
69
70
+
> CPU의 비교 연산은 본질적으로 빼기 연산입니다. x86 CPU에는 eflags라고 하는 레지스터가 있는데요, 이 레지스터는 마지막으로 실행된 연산의 결과에 따라 값이 변합니다. 위 예제에서 `ebx < ecx의 결과가 1`이라고 표현한 것은 사실 eflags가 특정한 값을 가질 때를 말합니다.
71
+
70
72
## 프로그램 카운터(program counter)
71
73
72
74
지금까지 배운 컴퓨터의 구조를 정리해보겠습니다. RAM과 레지스터, 연산장치가 있습니다. 연산장치는 주어진 프로그램에 따라 RAM이나 레지스터에서 값을 넣고 빼고 연산합니다. 근데 그럼 프로그램은 어디에 있을까요? 프로그램도 일종의 정보인만큼 프로그램을 저장할 메모리가 필요해보입니다.
@@ -311,4 +313,13 @@ int main()
311
313
312
314
이렇게 복잡하게 적어야합니다. `if (!valid) break;`가 없으면 `2 2`에서 음수를 입력했어도 `3 1`로 이동합니다.
313
315
314
-
> C++에선 RAII라는 것 때문에, goto를 쓰고 싶어도 쓰면 컴파일 오류가 발생하는 경우가 많습니다. RAII에 대해선 나중에 다루도록 하겠습니다.
316
+
> C++에선 RAII라는 것 때문에, goto를 쓰고 싶어도 쓰면 컴파일 오류가 발생하는 경우가 많습니다. RAII에 대해선 나중에 다루도록 하겠습니다.
0 commit comments