Home > Archive > CS_archive > πŸ’Ύ [CS] λ ˆμ§€μŠ€ν„°

πŸ’Ύ [CS] λ ˆμ§€μŠ€ν„°
CS

λ ˆμ§€μŠ€ν„°.

  • ν”„λ‘œκ·Έλž¨ 속 λͺ…령어와 λ°μ΄ν„°λŠ” μ‹€ν–‰ μ „ν›„λ‘œ λ°˜λ“œμ‹œ λ ˆμ§€μŠ€ν„°μ— μ €μž₯λ©λ‹ˆλ‹€.
    • λ”°λΌμ„œ λ ˆμ§€μŠ€ν„°μ— μ €μž₯된 κ°’λ§Œ 잘 관찰해도 ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ 흐름을 νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€
      • λ‹€μ‹œ 말해 λ ˆμ§€μŠ€ν„° 속 값을 μœ μ‹¬νžˆ κ΄€μ°°ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•  λ•Œ CPU λ‚΄μ—μ„œ 무슨 일이 λ²Œμ–΄μ§€κ³  μžˆλŠ”μ§€, μ–΄λ–€ λͺ…λ Ήμ–΄κ°€ μ–΄λ–»κ²Œ μˆ˜ν–‰λ˜λŠ”μ§€ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ°˜λ“œμ‹œ μ•Œμ•„μ•Ό ν•  λ ˆμ§€μŠ€ν„°.

  1. ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°
  2. λͺ…λ Ήμ–΄ λ ˆμ§€μŠ€ν„°
  3. λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„°
  4. λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°
  5. ν”Œλž˜μŠ€ λ ˆμ§€μŠ€ν„°
  6. λ²”μš© λ ˆμ§€μŠ€ν„°
  7. μŠ€νƒ 포인터
  8. 베이슀 λ ˆμ§€μŠ€ν„°

ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°.

  • ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°(PC: Program Counter) : λ©”λͺ¨λ¦¬μ—μ„œ κ°€μ Έμ˜¬ λͺ…λ Ήμ–΄μ˜ μ£Όμ†Œ, 즉 λ©”λͺ¨λ¦¬μ—μ„œ 읽어 듀일 λͺ…λ Ήμ–΄μ˜ μ£Όμ†Œλ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
    • ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°λ₯Ό λͺ…λ Ήμ–΄ 포인터(IP: Instruction Pointer) 라고 λΆ€λ₯΄λŠ” CPU도 μžˆμŠ΅λ‹ˆλ‹€.

λͺ…λ Ήμ–΄ λ ˆμ§€μŠ€ν„°.

  • λͺ…λ Ήμ–΄ λ ˆμ§€μŠ€ν„°(IR: Instruction Register) : 해석할 λͺ…λ Ήμ–΄, 즉 방금 λ©”λ‘œλ―Έμ—μ„œ 읽어 듀인 λͺ…λ Ήμ–΄λ₯Ό μ €μž₯ν•˜λŠ” λ ˆμ§€μŠ€ν„°μž…λ‹ˆλ‹€.
    • μ œμ–΄μž₯μΉ˜λŠ” λͺ…λ Ήμ–΄λ₯Ό λ ˆμ§€μŠ€ν„° 속 λͺ…λ Ήμ–΄λ₯Ό 받아듀이고 이λ₯Ό ν•΄μ„ν•œ λ’€ μ œμ–΄ μ‹ ν˜Έλ₯Ό λ‚΄λ³΄λƒ…λ‹ˆλ‹€.

λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„°.

  • λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„°(MAR: Memory Address Register) : λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό μ €μž₯ν•˜λŠ” λ ˆμ§€μŠ€ν„°μž…λ‹ˆλ‹€. CPUκ°€ 읽어 λ“€μ΄κ³ μž ν•˜λŠ” μ£Όμ†Œ 값을 μ£Όμ†Œ λ²„μŠ€λ‘œ 보낼 λ•Œ λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„°λ₯Ό 거치게 λ©λ‹ˆλ‹€.

λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°.

  • λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°(MBR: Memory buffer register) : λ©”λͺ¨λ¦¬μ™€ 주고받을 κ°’(데이터와 λͺ…λ Ήμ–΄)을 μ €μž₯ν•˜λŠ” λ ˆμ§€μŠ€ν„°μž…λ‹ˆλ‹€.
    • 즉, λ©”λͺ¨λ¦¬μ— μ“°κ³  싢은 κ°’μ΄λ‚˜ λ©”λͺ¨λ¦¬λ‘œλΆ€ν„° 전달받은 값은 λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°λ₯Ό κ±°μΉ©λ‹ˆλ‹€.
      • CPUκ°€ μ£Όμ†Œ λ²„μŠ€λ‘œ 내보낼 값이 λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„°λ₯Ό κ±°μΉœλ‹€λ©΄, 데이터 λ²„μŠ€λ‘œ μ£Όκ³  받을 값은 λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°λ₯Ό κ±°μΉ©λ‹ˆλ‹€.
        • λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°λŠ” λ©”λͺ¨λ¦¬ 데이터 λ ˆμ§€μŠ€ν„°(MDR: Memory Data Register)라고도 λΆˆλ¦½λ‹ˆλ‹€.

λ©”λͺ¨λ¦¬μ— μ €μž₯된 ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” κ³Όμ •μ—μ„œ ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°, λͺ…λ Ήμ–΄ λ ˆμ§€μŠ€ν„°, λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„°, λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°μ— μ–΄λ–€ 값듀이 λ‹΄κΈ°λŠ”μ§€ μ•Œμ•„λ΄…μ‹œλ‹€.

1.

CPU둜 μ‹€ν–‰ν•  ν”„λ‘œκ·Έλž¨μ΄ 1000λ²ˆμ§€λΆ€ν„° 1500λ²ˆμ§€κΉŒμ§€ μ €μž₯λ˜μ–΄ μžˆλ‹€κ³  κ°€μ •ν•˜κ² μŠ΅λ‹ˆλ‹€,
그리고 1000λ²ˆμ§€μ—λŠ” 1101β‚β‚‚β‚Žμ΄ μ €μž₯λ˜μ–΄ μžˆλ‹€κ³  κ°€μ •ν•˜κ² μŠ΅λ‹ˆλ‹€.

2.

ν”„λ‘œκ·Έλž¨μ„ μ²˜μŒλΆ€ν„° μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°μ—λŠ” 1000이 μ €μž₯λ©λ‹ˆλ‹€.
μ΄λŠ” λ©”λͺ¨λ¦¬μ—μ„œ κ°€μ Έμ˜¬ λͺ…λ Ήμ–΄κ°€ 1000λ²ˆμ§€μ— μžˆλ‹€λŠ” κ±Έ μ˜λ―Έν•©λ‹ˆλ‹€.

3.

1000λ²ˆμ§€λ₯Ό 읽어 듀이기 μœ„ν•΄μ„œλŠ” μ£Όμ†Œ λ²„μŠ€λ‘œ 100λ²ˆμ§€λ₯Ό 내보내야 ν•©λ‹ˆλ‹€.
이λ₯Ό μœ„ν•΄ λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„°μ—λŠ” 1000이 μ €μž₯λ©λ‹ˆλ‹€.

4.

β€˜λ©”λͺ¨λ¦¬ 읽기’ μ œμ–΄ μ‹ ν˜Έμ™€ λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„° 값이 각각 μ œμ–΄ λ²„μŠ€μ™€ μ£Όμ†Œ λ²„μŠ€λ₯Ό 톡해 λ©”λͺ¨λ¦¬λ‘œ λ³΄λ‚΄μ§‘λ‹ˆλ‹€.

5.

λ©”λͺ¨λ¦¬ 1000λ²ˆμ§€μ— μ €μž₯된 값은 데이터 λ²„μŠ€λ₯Ό 톡해 λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°λ‘œ μ „λ‹¬λ˜κ³ , ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°λŠ” μ¦κ°€λ˜μ–΄ λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό 읽어 듀일 μ€€λΉ„λ₯Ό ν•©λ‹ˆλ‹€.

6.

λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°μ— μ €μž₯된 값은 λͺ…λ Ήμ–΄ λ ˆμ§€μŠ€ν„°λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

7.

μ œμ–΄μž₯μΉ˜λŠ” λͺ…λ Ήμ–΄ λ ˆμ§€μŠ€ν„°μ˜ λͺ…λ Ήμ–΄λ₯Ό ν•΄μ„ν•˜κ³  μ œμ–΄ μ‹ ν˜Έλ₯Ό λ°œμƒμ‹œν‚΅λ‹ˆλ‹€.

5λ‹¨κ³„μ—μ„œ ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„° 값이 μ¦κ°€ν•œ 것을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

  • ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„° 값이 μ¦κ°€ν–ˆμœΌλ‹ˆ 1000λ²ˆμ§€ λͺ…λ Ήμ–΄ μ²˜λ¦¬κ°€ λλ‚˜λ©΄ CPUλŠ” λ‹€μŒ λͺ…λ Ήμ–΄(1001λ²ˆμ§€)λ₯Ό 읽어 λ“€μž…λ‹ˆλ‹€.

이처럼 ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°λŠ” μ§€μ†μ μœΌλ‘œ μ¦κ°€ν•˜λ©° κ³„μ†ν•΄μ„œ λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό 읽어 듀일 μ€€λΉ„λ₯Ό ν•©λ‹ˆλ‹€.

  • 이 과정이 λ°˜λ³΅λ˜λ©΄μ„œ CPUλŠ” ν”„λ‘œκ·Έλž¨μ„ μ°¨λ‘€λŒ€λ‘œ μ‹€ν–‰ν•΄ λ‚˜κ°‘λ‹ˆλ‹€.
    • κ²°κ΅­ CPUκ°€ λ©”λͺ¨λ¦¬ 속 ν”„λ‘œκ·Έλž¨μ„ 순차적으둜 읽어 듀이고 μ‹€ν–‰ν•΄ λ‚˜κ°ˆ 수 μžˆλŠ” μ΄μœ λŠ” CPU 속 ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°κ°€ κΎΈμ€€νžˆ μ¦κ°€ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

λ²”μš© λ ˆμ§€μŠ€ν„°

  • λ²”μš© λ ˆμ§€μŠ€ν„°(general purpose register) : λ‹€μ–‘ν•˜κ³  일반적인 μƒν™©μ—μ„œ 자유둭게 μ‚¬μš©ν•  수 μžˆλŠ” λ ˆμ§€μŠ€ν„°μž…λ‹ˆλ‹€.
    • λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°λŠ” ν…Œμ΄ν„° λ²„μŠ€λ‘œ 주고받을 κ°’λ§Œ μ €μž₯ν•˜κ³ , λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„°λŠ” μ£Όμ†Œ λ²„μŠ€λ‘œ 내보낼 μ£Όμ†Œκ°’λ§Œ μ €μž₯ν•˜μ§€λ§Œ, λ²”μš© λ ˆμ§€μŠ€ν„°λŠ” 데이터와 μ£Όμ†Œλ₯Ό λͺ¨λ‘ μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
      • 일반적으둜 CPU μ•ˆμ—λŠ” μ—¬λŸ¬ 개의 λ²”μš© λ ˆμ§€μŠ€ν„°λ“€μ΄ 있고, ν˜„λŒ€ λŒ€λ‹€μˆ˜ CPUλŠ” λͺ¨λ‘ λ²”μš© λ ˆμ§€μŠ€ν„°λ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.

ν”Œλ ˆκ·Έ λ ˆμ§€μŠ€ν„°

  • ν”Œλž˜κ·Έ λ ˆμ§€μŠ€ν„°(Flag register) : μ—°μ‚° κ²°κ³Ό λ˜λŠ” CPU μƒνƒœμ— λŒ€ν•œ 뢀가적인 정보λ₯Ό μ €μž₯ν•˜λŠ” λ ˆμ§€μŠ€ν„°μž…λ‹ˆλ‹€.

νŠΉμ • λ ˆμ§€μŠ€ν„°λ₯Ό μ΄μš©ν•œ μ£Όμ†Œ μ§€μ • 방식(1): μŠ€νƒ μ£Όμ†Œ μ§€μ • 방식.

  • μŠ€νƒ μ£Όμ†Œ μ§€μ • 방식 : μŠ€νƒκ³Ό μŠ€νƒ 포인터λ₯Ό μ΄μš©ν•œ μ£Όμ†Œ μ§€μ • 방식
    • μŠ€νƒμ€ ν•œμͺ½ 끝이 λ§‰ν˜€ μžˆλŠ” 톡과 같은 μ €μž₯ κ³΅κ°„μž…λ‹ˆλ‹€.
      • κ·Έλž˜μ„œ μŠ€νƒμ€ κ°€μž₯ μ΅œκ·Όμ— μ €μž₯ν•˜λŠ” κ°’λΆ€ν„° κΊΌλ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
        • μ—¬κΈ°μ„œ μŠ€νƒ ν¬μΈν„°λž€ μŠ€νƒμ˜ κΌ­λŒ€κΈ°λ₯Ό κ°€λ¦¬ν‚€λŠ” λ ˆμ§€μŠ€ν„°μž…λ‹ˆλ‹€.
          • 즉, μŠ€νƒ ν¬μΈν„°λŠ” μŠ€νƒμ— λ§ˆμ§€λ§‰μœΌλ‘œ μ €μž₯ν•œ κ°’μ˜ μœ„μΉ˜λ₯Ό μ €μž₯ν•˜λŠ” λ ˆμ§€μŠ€ν„°μž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ λ΄…μ‹œλ‹€.

κ°€λ Ή λ‹€μŒκ³Ό 같이 μœ„μ—μ„œλΆ€ν„° μ£Όμ†Œκ°€ 맀겨져 있고 μ•„λž˜λΆ€ν„° 차곑차곑 데이터가 μ €μž₯λ˜μ–΄ μžˆλŠ” μŠ€νƒμ΄ μžˆλ‹€κ³  κ°€μ •ν•΄λ΄…μ‹œλ‹€.

  • μ΄λ•Œ μŠ€νƒ ν¬μΈν„°λŠ” μŠ€νƒμ˜ 제일 κΌ­λŒ€κΈ° μ£Όμ†Œ, 즉 4λ²ˆμ§€λ₯Ό μ €μž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
    • μ΄λŠ” β€˜μŠ€νƒ 포인터가 μŠ€νƒμ˜ κΌ­λŒ€κΈ°λ₯Ό 가리킀고 μžˆλ‹€β€™κ³  λ³Ό 수 있겠죠.
      • μ‰½κ²Œ 말해, μŠ€νƒ ν¬μΈν„°λŠ” μŠ€νƒμ˜ μ–΄λ””κΉŒμ§€ 데이터가 μΊμ›Œμ Έ μžˆλŠ”μ§€μ— λŒ€ν•œ ν‘œμ‹œλΌκ³  보면 λ©λ‹ˆλ‹€.


그럼 이 μŠ€νƒμ—μ„œ 데이터λ₯Ό κΊΌλ‚Ό λ•ŒλŠ” μ–΄λ–€ 데이터뢀터 κΊΌλ‚΄κ²Œ λ κΉŒμš”?

  • 1 -> 2 -> 3 μˆœμ„œλŒ€λ‘œ κΊΌλ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
    • μ—¬κΈ°μ„œ ν•˜λ‚˜μ˜ 데이터λ₯Ό κΊΌλ‚΄λ©΄ μŠ€νƒμ—λŠ” 2와 3이 남고, μŠ€νƒμ˜ κΌ­λŒ€κΈ° μ£Όμ†Œκ°€ λ‹¬λΌμ‘ŒκΈ° λ•Œλ¬Έμ— μŠ€νƒ ν¬μΈν„°λŠ” 5λ²ˆμ§€λ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€.

λ°˜λŒ€λ‘œ μŠ€νƒμ— 데이터λ₯Ό μΆ”κ°€ν•œλ‹€λ©΄ μ–΄λ–»κ²Œ λ κΉŒμš”?

  • ν˜„μž¬ μŠ€ν…μ„Έ 4λΌλŠ” 데이터λ₯Ό μ €μž₯ν•˜λ©΄ μŠ€νƒμ˜ κΌ­λŒ€κΈ°μ— 4κ°€ μ €μž₯λ©λ‹ˆλ‹€.
    • μ΄λ•Œ μŠ€νƒμ˜ κΌ­λŒ€κΈ° μ£Όμ†Œκ°€ λ‹¬λΌμ‘ŒκΈ° λ•Œλ¬Έμ— μŠ€νƒ ν¬μΈν„°λŠ” 4λ²ˆμ§€λ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€.

그런데 μŠ€νƒμ΄λΌλŠ” 것은 λ„λŒ€μ²΄ 어디에 μžˆλŠ” κ±ΈκΉŒμš”?

  • μŠ€νƒμ€ λ©”λͺ¨λ¦¬ μ•ˆμ— μžˆμŠ΅λ‹ˆλ‹€.
    • μ •ν™•νžˆλŠ” λ©”λͺ¨λ¦¬ μ•ˆμ— μŠ€νƒμ²˜λŸΌ μ‚¬μš©ν•  μ˜μ—­μ΄ μ •ν•΄μ Έ μžˆμŠ΅λ‹ˆλ‹€.
      • 이λ₯Ό μŠ€νƒ μ˜μ—­μ΄λΌκ³  ν•©λ‹ˆλ‹€.
        • 이 μ˜μ—­μ€ λ‹€λ₯Έ μ£Όμ†Œ κ³΅κ°„κ³ΌλŠ” λ‹€λ₯΄κ²Œ μŠ€νƒμ²˜λŸΌ μ‚¬μš©ν•˜κΈ° μ•”λ¬΅μ μœΌλ‘œ μ•½μ†λœ μ˜μ—­μž…λ‹ˆλ‹€.

νŠΉμ • λ ˆμ§€μŠ€ν„°λ₯Ό μ΄μš©ν•œ μ£Όμ†Œ μ§€μ • 방식(2): λ³€μœ„ μ£Όμ†Œ μ§€μ • 방식

  • λ³€μœ„ μ£Όμ†Œ μ§€μ • 방식(displacement addressing mode) : μ˜€νΌλžœλ“œ ν•„λ“œμ˜ κ°’(λ³€μœ„)κ³Ό νŠΉμ • λ ˆμ§€μŠ€ν„°μ˜ 값을 λ”ν•˜μ—¬ 유효 μ£Όμ†Œλ₯Ό μ–»μ–΄λ‚΄λŠ” μ£Όμ†Œ μ§€μ • λ°©μ‹μž…λ‹ˆλ‹€.

κ·Έλž˜μ„œ λ³€μœ„ μ£Όμ†Œ 지정방식을 μ‚¬μš©ν•˜λŠ” λͺ…λ Ήμ–΄λŠ” λ‹€μŒ κ·Έλ¦Όκ³Ό 같이 μ—°μ‚° μ½”λ“œ ν•„λ“œ, μ–΄λ–€ λ ˆμ§€μŠ€ν„°μ˜ κ°’κ³Ό 더할지λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ ˆμ§€μŠ€ν„° ν•„λ“œ, 그리고 μ£Όμ†Œλ₯Ό λ‹΄κ³ μžˆλŠ” μ˜€νΌλžœλ“œ ν•„λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ΄λ•Œ, λ³€μœ„ μ£Όμ†Œ μ§€μ • 방식은 μ˜€νΌλžœλ“œ ν•„λ“œμ˜ μ£Όμ†Œμ™€ μ–΄λ–€ λ ˆμ§€μŠ€ν„°λ₯Ό λ”ν•˜λŠ”μ§€μ— 따라 μƒλŒ€ μ£Όμ†Œ μ§€μ • 방식, 베이슀 λ ˆμ§€μŠ€ν„° μ£Όμ†Œ μ§€μ • 방식 λ“±μœΌλ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

μƒλŒ€ μ£Όμ†Œ μ§€μ • 방식

  • μƒλŒ€ μ£Όμ†Œ μ§€μ • 방식(relative addressing mode) : μ˜€νΌλžœλ“œμ™€ ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°μ™€ 값을 λ”ν•˜μ—¬ 유효 μ£Όμ†Œλ₯Ό μ–»λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
    • ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„°μ—λŠ” 읽어 듀일 λͺ…λ Ήμ–΄μ˜ μ£Όμ†Œκ°€ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
      • λ§Œμ•½ μ˜€νΌλžœλ“œκ°€ 음수, κ°€λ Ή -3μ΄μ˜€λ‹€λ©΄ CPUλŠ” 읽어 λ“€μ΄κΈ°λ‘œ ν•œ λͺ…λ Ήμ–΄λ‘œλΆ€ν„° β€˜μ„Έ 번째 이전’ λ²ˆμ§€λ‘œ μ ‘κ·Όν•©λ‹ˆλ‹€.
        • ν•œλ§ˆλ””λ‘œ μ‹€ν–‰ν•˜λ €λŠ” λͺ…λ Ήμ–΄μ˜ μ„Έ μΉΈ 이전 λ²ˆμ§€ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λŠ” κ²ƒμ΄μ§€μš”

반면, μ˜€νΌλžœλ“œκ°€ μ–‘μˆ˜, κ°€μ—΄ 3μ΄μ—ˆλ‹€λ©΄ CPUλŠ” 읽어 λ“€μ΄κΈ°λ‘œ ν–ˆλ˜ λͺ…λ Ήμ–΄μ˜ β€˜μ„Έ 번째 이후’ λ²ˆμ§€λ‘œ μ ‘κ·Όν•©λ‹ˆλ‹€.

  • 즉, μ‹€ν–‰ν•˜λ €λŠ” λͺ…λ Ήμ–΄μ—μ„œ μ„Έ μΉΈ κ±΄λ„ˆλ›΄ λ²ˆμ§€λ₯Ό μ‹€ν–‰ν•˜λŠ” κ²λ‹ˆλ‹€.

μƒλŒ€ μ£Όμ†Œ μ§€μ • 방식은 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ ifλ¬Έκ³Ό μœ μ‚¬ν•˜κ²Œ λͺ¨λ“  μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” 것이 μ•„λ‹Œ, λΆ„κΈ°ν•˜μ—¬ νŠΉμ • μ£Όμ†Œμ˜ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

베이슀 λ ˆμ§€μŠ€ν„° μ£Όμ†Œ μ§€μ • 방식

  • 베이슀 λ ˆμ§€μŠ€ν„° μ£Όμ†Œ μ§€μ • 방식(base-register addressing mode) : μ˜€νΌλžœλ“œμ™€ 베이슀 λ ˆμ§€μŠ€ν„°μ˜ 값을 λ”ν•˜μ—¬ 유효 μ£Όμ†Œλ₯Ό μ–»λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

μ—¬κΈ°μ„œ 베이슀 λ ˆμ§€μŠ€ν„°λŠ” β€˜κΈ°μ€€ μ£Όμ†Œβ€™, μ˜€νΌλžœλ“œλŠ” β€˜κΈ°μ€€ μ£Όμ†Œλ‘œλΆ€ν„° λ–¨μ–΄μ§„ κ±°λ¦¬β€™λ‘œμ„œμ˜ 역할을 ν•©λ‹ˆλ‹€.

  • 즉, 베이슀 λ ˆμ§€μŠ€ν„° μ£Όμ†Œ μ§€μ • 방식은 베이슀 λ ˆμ§€μŠ€ν„° 속 κΈ°μ€€ μ£Όμ†Œλ‘œλΆ€ν„° μ–Όλ§ˆλ‚˜ λ–¨μ–΄μ Έ μžˆλŠ” μ£Όμ†Œμ— μ ‘κ·Όν•  것인지λ₯Ό μ—°μ‚°ν•˜μ—¬ 유효 μ£Όμ†Œλ₯Ό μ–»μ–΄λ‚΄λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

κ°€λ Ή 베이슀 λ ˆμ§€μŠ€ν„°μ— 200μ΄λΌλŠ” 값이 있고 μ˜€νΌλžœλ“œκ°€ 40이라면 μ΄λŠ” β€œκΈ°μ€€ μ£Όμ†Œ 200λ²ˆμ§€λ‘œλΆ€ν„° 40만큼 λ–¨μ–΄μ§„ 240λ²ˆμ§€λ‘œ μ ‘κ·Όν•˜λΌβ€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

또 베이슀 λ ˆμ§€μŠ€ν„°μ— 550μ΄λΌλŠ” 값이 담겨 있고 μ˜€νΌλžœλ“œκ°€ 50이라면 μ΄λŠ” β€œκΈ°μ€€ μ£Όμ†Œ 550λ²ˆμ§€λ‘œλΆ€ν„° 50만큼 λ–¨μ–΄μ§„ 600λ²ˆμ§€λ‘œ μ ‘κ·Όν•˜λΌβ€λ₯Ό μ˜λ―Έν•˜λŠ” λͺ…λ Ήμ–΄ μž…λ‹ˆλ‹€.

ν‚€μ›Œλ“œλ‘œ μ •λ¦¬ν•˜λŠ” 핡심 포인트

  • ν”„λ‘œκ·Έλž¨ μΉ΄μš΄ν„° λŠ” λ©”λͺ¨λ¦¬μ—μ„œ κ°€μ Έμ˜¬ λͺ…λ Ήμ–΄μ˜ μ£Όμ†Œ, λͺ…λ Ήμ–΄ λ ˆμ§€μŠ€ν„°λŠ” 해석할 λͺ…λ Ήμ–΄λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
  • λ©”λͺ¨λ¦¬ μ£Όμ†Œ λ ˆμ§€μŠ€ν„°λŠ” λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œ, λ©”λͺ¨λ¦¬ 버퍼 λ ˆμ§€μŠ€ν„°λŠ” λ©”λͺ¨λ¦¬μ™€ 주고받을 데이터λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
  • λ²”μš© λ ˆμ§€μŠ€ν„°λŠ” 데이터와 μ£Όμ†Œλ₯Ό λͺ¨λ‘ μ €μž₯ν•˜κ³ , ν”Œλž˜κ·Έ λ ˆμ§€μŠ€ν„°λŠ” μ—°μ‚° κ²°κ³Ό ν˜Ήμ€ CPU μƒνƒœμ— λŒ€ν•œ λΆ€κ°€ 정보λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
  • μŠ€νƒ ν¬μΈν„°λŠ” μŠ€νƒ μ΅œμƒλ‹¨μ˜ μœ„μΉ˜λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
  • 베이슀 λ ˆμ§€μŠ€ν„°μ— μ €μž₯된 μ£Όμ†ŒλŠ” κΈ°μ€€ μ£Όμ†Œλ‘œμ„œμ˜ 역할을 ν•©λ‹ˆλ‹€.

더 μ•Œμ•„λ³΄κΈ°

  • Jump
    • Jump λͺ…λ Ήμ–΄λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ 흐름을 끊고 μ§€μ •λœ μ£Όμ†Œλ‘œ μ ν”„ν•©λ‹ˆλ‹€.
  • Conditional Jump
    • Conditional Jump λͺ…λ Ήμ–΄λŠ” νŠΉμ • 쑰건이 좩쑱될 λ•Œμ—λ§Œ μ£Όμ–΄μ§„ μ£Όμ†Œλ‘œ μ ν”„ν•©λ‹ˆλ‹€.
  • Call
    • Call λͺ…λ Ήμ–΄λŠ” ν˜„μž¬ μœ„μΉ˜λ₯Ό μ €μž₯ν•˜κ³  μ§€μ •λœ μ£Όμ†Œλ‘œ μ΄λ™ν•©λ‹ˆλ‹€.
    • ν˜„μž¬ μœ„μΉ˜λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄ μŠ€νƒμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
    • 주둜 μ„œλΈŒλ£¨ν‹΄(ν•˜μœ„ 루틴 λ˜λŠ” ν•¨μˆ˜)을 ν˜ΈμΆœν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
  • Return
    • Return λͺ…λ Ήμ–΄λŠ” μ„œλΈŒλ£¨ν‹΄μ—μ„œ 호좜자둜 λ³΅κ·€ν•©λ‹ˆλ‹€.
    • 호좜된 μ„œλΈŒλ£¨ν‹΄μ΄ 싀행을 마치고 호좜자둜 λŒμ•„κ°ˆ λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.