엔지니어가 되고 싶은 공돌이

07. Assembly 2: Control Flow 본문

Computer Science/System Programming

07. Assembly 2: Control Flow

Geca 2025. 2. 7. 13:25

 

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
Comments