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
+14-9Lines changed: 14 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -92,10 +92,13 @@ int main()
92
92
프로그램이 시작했을 때,
93
93
1. (적당한 공간을 i라고 이름짓고) i에 5를 넣습니다.
94
94
2. (적당한 공간을 j라고 이름짓고) j에 6을 넣습니다.
95
-
3. (적당한 공간을 k라고 이름짓고) k에 i와 j 각각이 갖고 있는 값을 더한 결과를 넣습니다.
95
+
3. ecx에 j의 값을 불러옵니다.
96
+
4. eax에 i의 값을 불러옵니다.
97
+
5. eax에 eax와 ecx에 들어있는 값의 합을 집어넣습니다.
98
+
6. (적당한 공간을 k라고 이름짓고) k에 eax에 들어있는 값을 집어넣습니다.
96
99
```
97
100
98
-
프로그램 카운터가 1, 2, 3(에 대응하는 메모리 주소)으로 변화해 간다는 사실을 알 수 있습니다.
101
+
프로그램 카운터가 1, 2, 3, 4, 5, 6(에 대응하는 메모리 주소)으로 변화해 간다는 사실을 알 수 있습니다.
99
102
100
103
특정한 문장에 대응되는 주소를 프로그램 카운터에 대입할 수도 있습니다. [7장](../7-control-flow)에서 다양한 제어 흐름 문장들에 대해 배웠는데요, if문을 예로 들겠습니다.
101
104
@@ -115,14 +118,16 @@ int main()
115
118
```
116
119
프로그램이 시작했을 때,
117
120
1. (적당한 공간을 i라고 이름짓고) i라는 이름의 공간에 사용자의 입력을 넣습니다.
118
-
2. i < 5의 결과가 거짓이라면 5로 이동합니다.
119
-
3. i + 10을 출력합니다.
120
-
4. 6으로 이동합니다.
121
-
5. i를 출력합니다.
122
-
6.
121
+
2. ecx에 i의 값을 집어넣습니다.
122
+
3. ecx < 5의 결과가 거짓이라면 7로 이동합니다.
123
+
4. ecx에 ecx + 10의 결과를 집어넣습니다.
124
+
5. ecx의 값을 출력합니다.
125
+
6. 8로 이동합니다.
126
+
7. ecx를 출력합니다.
127
+
8.
123
128
```
124
129
125
-
사용자의 입력이 `14`라고 가정해보겠습니다. 그럼 프로그램 카운터는 기본적으로 1씩 증가합니다. 그런데, 2번에서 `i < 5`가 거짓이기 때문에 프로그램 카운터가 5로 바뀝니다. 그래서 이 경우 프로그램 카운터가 가지고 있는 값은 1, 2, 5, 6(에 대응하는 메모리 주소)으로 변화해 간다는 사실을 알 수 있습니다. 반대로 사용자의 입력이 `3`이라면 프로그램 카운터 속 숫자는 1, 2, 3, 4, 6으로 변화해 간다는 사실을 알 수 있습니다.
130
+
사용자의 입력이 `14`라고 가정해보겠습니다. 그럼 프로그램 카운터는 기본적으로 1씩 증가합니다. 그런데, 2번에서 `i < 5`가 거짓이기 때문에 프로그램 카운터가 7로 바뀝니다. 그래서 이 경우 프로그램 카운터가 가지고 있는 값은 1, 2, 3, 7, 8(에 대응하는 메모리 주소)로 변화해 간다는 사실을 알 수 있습니다. 반대로 사용자의 입력이 `3`이라면 프로그램 카운터 속 숫자는 1, 2, 3, 4, 5, 6, 8로 변화해 간다는 사실을 알 수 있습니다.
0 commit comments