엔지니어가 되고 싶은 공돌이
07. Assembly 2: Control Flow 본문
7. 1. Flag Bit Register
- Flag Bit Register는 Arithmetic Operations로 Implicit하게 설정되고,
Compare Operations로 Explicit하게 설정됩니다.
- t = a + b.
CF: Carry O -> 1,
ZF: t == 0 -> 1,
SF: t < 0 -> 1,
OF: (a > 0 && b > 0 && t < 0) || (a < 0 && b < 0 && t > 0) -> 1.
- cmpl b, a ( a == b ) : a – b , 이 연산의 결과값은 저장되지 않으며, 오직 Flag Bit 세팅에만 사용됩니다.
- testl b, a : a & b , CF와 OF는 0으로 두고, 나머지 2개에만 관심을 갖습니다.
7. 2. Jumping
- jX instructions: 조건 코드에 따라 코드의 다른 부분으로 이동.
je: a == b (ZF = 1) 이면 Jump. [Usnig cmpl Operation]
jne: (ZF = 0) 이면 Jump.
jg: signed > .
jge: signed >= .
jl: signed < .
jle: signed <= .
7. 3. Control Flow
- 함수가 끝나면 Retrun Value는 %eax 입니다.
- do - while은 조건에 상관없이 무조건 한 번 실행하지만,
while은 조건문이 맞지 않는다면 실행되지 않습니다.
그리고 do - while과 while의 성능은 같습니다.
- for도 조건식에 맞지 않다면 한 번도 실행되지 않습니다.
- Case가 적으면 if를, Case가 많으면 Switch를 쓰는게 좋습니다.
- Label에서 .Lxx처럼 . 을 붙이게 되면, Assembler에 의해 Address로 변환됩니다.
- 모든 Loop는 do-while의 형태로 변형됩니다.
'Computer Science > System Programming' 카테고리의 다른 글
09. Assembly 4: Complex Data Types (0) | 2025.02.11 |
---|---|
08. Assembly 3: Procedures (0) | 2025.02.10 |
06. Assembly 1: Basic Operations (0) | 2025.02.06 |
05. Program and Instruction Set (0) | 2025.02.06 |
04. Byte Ordering (0) | 2025.02.05 |