λͺ λ Ήμ΄μ ꡬ쑰
μ°μ°μ½λμ μ€νΌλλ
μλ κ·Έλ¦Όμ 보면 μ λ°°κ²½ νλλ λͺ λ Ήμ βμλβ, λ¬λ¦¬ λ§ν΄ βμ°μ°βμ λ΄κ³ μκ³ ν°μ λ°°κ²½ νλλ βμ°μ°μ μ¬μ©ν λ°μ΄ν°β λλ βμ°μ°μ μ¬μ©ν λ°μ΄ν°κ° μ μ₯λ μμΉβλ₯Ό λ΄κ³ μμ΅λλ€.
- λͺ λ Ήμ΄ : μ°μ° μ½λμ μ€νΌλλλ‘ κ΅¬μ±λμ΄ μμ΅λλ€.
- μ°μ°μ½λ(Opreation Code): μ λ°°κ²½ νλ κ°, μ¦ βλͺ λ Ήμ΄κ° μνν μ°μ°βμ μ°μ°μ½λ(Operation Code) λΌ ν©λλ€.
- μ€νΌλλ(Operand) : ν°μ λ°°κ²½ νλ κ°, μ¦ βμ°μ°μ μ¬μ©ν λ°μ΄ν°β λλ βμ°μ°μ μ¬μ©ν λ°μ΄ν°κ° μ μ₯λ μμΉβλ₯Ό μ€νΌλλλΌκ³ ν©λλ€.
μ°μ° μ½λλ μ°μ°μ, μ€νΌλλλ νΌμ°μ°μ λΌκ³ λ λΆλ¦ λλ€.
- μ°μ° μ½λ νλ: μ°μ° μ½λκ° λ΄κΈ°λ μμ(μμΉ λ λΆλΆ)
- μ€νΌλλ νλ: μ€νΌλλκ° λ΄κΈ°λ μμ(μμΉ λμ§ μμ λΆλΆ)
μ€νΌλλ
μ€νΌλλλ βμ°μ°μ μ¬μ©ν λ°μ΄ν°β λλ βμ°μ°μ μ¬μ©ν λ°μ΄ν°κ° μ μ₯λ μμΉβλ₯Ό μλ―Έν©λλ€.
- κ·Έλμ μ€νΌλλ νλμλ μ«μμ λ¬Έμ λ±μ λνλ΄λ λ°μ΄ν° λλ λ©λͺ¨λ¦¬λ λ μ§μ€ν° μ£Όμκ° μ¬ μ μμ΅λλ€.
- λ€λ§ μ€νΌλλ νλμλ μ«μλ λ¬Έμμ κ°μ΄ μ°μ°μ μ¬μ©ν λ°μ΄ν°λ₯Ό μ§μ λͺ
μν기보λ€λ, λ§μ κ²½μ° μ°μ°μ μ¬μ©ν λ°μ΄ν°κ° μ μ₯λ μμΉ, μ¦ λ©λͺ¨λ¦¬ μ£Όμλ λ μ§μ€ν° μ΄λ¦μ΄ λ΄κΉλλ€.
- κ·Έλμ μ€νΌλλ νλλ₯Ό μ£Όμ νλ λΌκ³ λΆλ₯΄κΈ°λ ν©λλ€.
μ€νΌλλλ λͺ λ Ήμ΄ μμ νλλ μμ μλ μκ³ , ν κ°λ§ μμ μλ μκ³ , λ κ° λλ μΈ κ° λ± μ¬λ¬κ°κ° μμ μλ μμ΅λλ€.
- μ€νΌλλκ° νλλ μλ λͺ λ Ήμ΄ 0-μ£Όμ λͺ λ Ήμ΄
- μ€νΌλλκ° νλμΈ λͺ λ Ήμ΄ 1-μ£Όμ λͺ λ Ήμ΄
- μ€νΌλλκ° λ κ°μΈ λͺ λ Ήμ΄ 2-μ£Όμ λͺ λ Ήμ΄
- μ€νΌλλκ° μΈ κ°μΈ λͺ λ Ήμ΄ 3-μ£Όμ λͺ λ Ήμ΄
μ°μ° μ½λ
μ°μ° μ½λ μ’ λ₯λ λ§€μ° λ§μ§λ§, κ°μ₯ κΈ°λ³Έμ μΈ μ°μ° μ½λ μ νμ ν¬κ² λ€ κ°μ§λ‘ λλ μ μμ΅λλ€.
- λ°μ΄ν° μ μ‘
- μ°μ /λ Όλ¦¬ μ°μ°
- μ μ΄ νλ¦ λ³κ²½
- μ μΆλ ₯ μ μ΄
μ£Όμ μ§μ λ°©μ
μ°μ° μ½λμ μ¬μ©ν λ°μ΄ν°κ° μ μ₯λ μμΉ, μ¦ μ°μ°μ λμμ΄ λλ λ°μ΄ν°κ° μ μ₯λ μμΉλ₯Ό μ ν¨ μ£Όμ(effective address) λΌκ³ ν©λλ€.
μ€νΌλλ νλμ λ°μ΄ν°κ° μ μ₯λ μνΌλ₯Ό λͺ μ ν λ μ°μ°μ μ¬μ©ν λ°μ΄ν° μμΉλ₯Ό μ°Ύλ λ°©λ²μ μ£Όμ μ§μ λ°©μ(addressing mode) μ΄λΌκ³ ν©λλ€
- λ€μ λ§ν΄, μ£Όμ μ§μ λ°©μμ μ ν¨ μ£Όμλ₯Ό μ°Ύλ λ°©λ²μ λλ€.
μ¦μ μ£Όμ μ§μ λ°©μ
-
μ¦μ μ£Όμ μ§μ λ°©μ(immediate addressing mode): μ°μ°μ μ¬μ©ν λ°μ΄ν°λ₯Ό μ€νΌλλ νλμ μ§μ λͺ
μνλ λ°©μμ
λλ€.
- μ΄λ° λ°©μμ ννν μ μλ λ°μ΄ν°μ ν¬κΈ°κ° μμμ§λ λ¨μ μ΄ μμ§λ§, μ°μ°μ μ¬μ©ν λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬λ λ μ§μ€ν°λ‘λΆν° μ°Ύλ κ³Όμ μ΄ μκΈ° λλ¬Έμ μ΄ν μ€λͺ ν μ£Όμ μ§μ λ°©μλ€λ³΄λ€ λΉ λ¦ λλ€.
μ§μ μ£Όμ μ§μ λ°©μ
-
μ§μ μ£Όμ μ§μ λ°©μ(direct addressing mode): μ€νΌλλ νλμ μ ν¨ μ£Όμλ₯Ό μ§μ λͺ
μνλ λ°©μμ
λλ€.
- μ€νΌλλ νλμμ ννν μ μλ λ°μ΄ν°μ ν¬κΈ°λ μ¦μ μ£Όμ μ§μ λ°©μλ³΄λ€ λ 컀μ‘μ§λ§, μ¬μ ν μ ν¨ μ£Όμλ₯Ό ννν μ μλ λ²μκ° μ°μ° μ½λμ λΉνΈ μλ§νΌ μ€μ΄λ€μμ΅λλ€.
- λ€μ λ§ν΄ ννν μ μλ μ€νΌλλ νλμ κΈΈμ΄κ° μ°μ° μ½λμ κΈΈμ΄λ§νΌ 짧μμ Έ ννν μ μλ μ ν¨ μ£Όμμ μ νμ΄ μκΈΈ μ μμ΅λλ€.
κ°μ μ£Όμ μ§μ λ°©μ
-
κ°μ μ£Όμ μ§μ λ°©μ(indirect addressing mode): μ ν¨ μ£Όμμ μ£Όμλ₯Ό μ€νΌλλ νλμ λͺ
μν©λλ€. μ§μ μ£Όμ μ§μ λ°©μλ³΄λ€ ννν μ μλ μ ν¨ μ£Όμμ λ²μκ° λ λμ΅λλ€.
- λ λ²μ λ©λͺ¨λ¦¬ μ κ·Όμ΄ νμνκΈ° λλ¬Έμ μμ μ€λͺ ν μ£Όμ μ§μ λ°©μλ€λ³΄λ€ μΌλ°μ μΌλ‘ λλ¦° λ°©μμ λλ€.
λ μ§μ€ν° μ£Όμ μ§μ λ°©μ
-
λ μ§μ€ν° μ£Όμ μ§μ λ°©μ(register addressing mode): μ§μ μ£Όμ μ§μ λ°©μκ³Ό λΉμ·νκ² μ°μ°μ μ¬μ©ν λ°μ΄ν°λ₯Ό μ μ₯ν λ μ§μ€ν°λ₯Ό μ€νΌλλ νλμ μ§μ λͺ
μνλ λ°©λ²μ
λλ€.
- μΌλ°μ μΌλ‘ CPU μΈλΆμ μλ λ©λͺ¨λ¦¬μ μ κ·Όνλ κ²λ³΄λ€ CPU λ΄λΆμ μλ λ μ§μ€ν°μ μ κ·Όνλ κ²μ΄ λ λΉ λ¦ λλ€.
- κ·Έλ¬λ―λ‘ λ μ§μ€ν° μ£Όμ μ§μ λ°©μμ μ§μ μ£Όμ μ§μ λ°©μλ³΄λ€ λΉ λ₯΄κ² λ°μ΄ν°μ μ κ·Όν μ μμ΅λλ€.
- λ€λ§, λ μ§μ€ν° μ£Όμ μ§μ λ°©μμ μ§μ μ£Όμ μ§μ λ°©μκ³Ό λΉμ·ν λ¬Έμ λ₯Ό 곡μ ν©λλ€. ννν μ μλ λ μ§μ€ν° ν¬κΈ°μ μ νμ΄ μκΈΈ μ μλ€λ μ μ λλ€.
λ μ§μ€ν° κ°μ μ£Όμ μ§μ λ°©μ
-
λ μ§μ€ν° κ°μ μ£Όμ μ§μ λ°©μ(register indirect addressing mode): μ°μ°μ μ¬μ©ν λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬μ μ μ₯νκ³ , κ·Έ μ£Όμ(μ ν¨ μ£Όμ)λ₯Ό μ μ₯ν λ μ§μ€ν°λ₯Ό μ€νΌλλ νλμ λͺ
μνλ λ°©λ²μ
λλ€.
- μ ν¨ μ£Όμλ₯Ό μ°Ύλ κ³Όμ μ΄ κ°μ μ£Όμ μ§μ λ°©μκ³Ό λΉμ·νμ§λ§, λ©λͺ¨λ¦¬μ μ κ·Όνλ νμκ° ν λ²μΌλ‘ μ€μ΄λ λ€λ μ°¨μ΄μ΄μ μ₯μ μ΄ μμ΅λλ€.
- λ μ§μ€ν° κ°μ μ£Όμ μ§μ₯ λ°©μμ κ°μ μ£Όμ μ§μ λ°©μλ³΄λ€ λΉ λ¦ λλ€.
μ 리
- μ°μ°μ μ¬μ©ν λ°μ΄ν°λ₯Ό μ°Ύλ λ°©λ²μ μ£Όμ μ§μ λ°©μ μ΄λΌκ³ νμ΅λλ€.
- μ°μ°μ μ¬μ©ν λ°μ΄ν°κ° μ μ₯λ μμΉλ₯Ό μ ν¨ μ£Όμ λΌκ³ νμ΅λλ€.
- λνμ μΈ μ£Όμ μ§μ λ°©μμΌλ‘ μλμ λ€μ― κ°μ§ λ°©μμ μκ°νμ΅λλ€.
- κ°κ°μ λ°©μμ΄ μ€νΌλλ νλμ λͺ
μνλ κ°μ μ λ¦¬ν΄ λ³΄λ©΄ μλμ κ°μ΅λλ€.
- μ¦μ μ£Όμ μ§μ λ°©μ: μ°μ°μ μ¬μ©ν λ°μ΄ν°
- μ§μ μ£Όμ μ§μ λ°©μ: μ ν¨ μ£Όμ(λ©λͺ¨λ¦¬ μ£Όμ)
- κ°μ μ£Όμ μ§μ λ°©μ: μ ν¨ μ£Όμμ μ£Όμ
- λ μ§μ€ν° μ£Όμ μ§μ λ°©μ: μ ν¨ μ£Όμ(λ μ§μ€ν° μ΄λ¦)
- λ μ§μ€ν° κ°μ μ£Όμ μ§μ λ°©μ: μ ν¨ μ£Όμλ₯Ό μ μ₯ν λ μ§μ€ν°
- κ°κ°μ λ°©μμ΄ μ€νΌλλ νλμ λͺ
μνλ κ°μ μ λ¦¬ν΄ λ³΄λ©΄ μλμ κ°μ΅λλ€.
ν€μλλ‘ μ 리νλ ν΅μ¬ ν¬μΈνΈ
- λͺ λ Ήμ΄ λ μ°μ° μ½λμ μ€νΌλλλ‘ κ΅¬μ±λ©λλ€.
- μ°μ° μ½λλ λͺ λ Ήμ΄κ° μνν μ°μ°μ μλ―Έν©λλ€.
- μ€νΌλλλ μ°μ°μ μ¬μ©ν λ°μ΄ν° λλ μ°μ°μ μ¬μ©ν λ°μ΄ν°κ° μ μ₯λ μμΉλ₯Ό μλ―Έν©λλ€.
- μ£Όμ μ§μ λ°©μμ μ°μ°μ μ¬μ©ν λ°μ΄ν° μμΉλ₯Ό μ°Ύλ λ°©λ²μ λλ€.
Q1. Swiftμμ λ©λͺ¨λ¦¬ μ£Όμμ μ κ·ΌνκΈ° μν΄ μ΄λ€ νμ μ μ¬μ©ν μ μλμ§ μ€λͺ ν΄ μ£ΌμΈμ. κ·Έλ¦¬κ³ μ μ΄λ¬ν μ κ·Ό λ°©μμ΄ νμν κΉμ?
Swiftμμ λ©λͺ¨λ¦¬ μ£Όμμ μ§μ μ κ·ΌνκΈ° μν΄ UnsafePointer<T>
νμ
κ³Ό κ·Έ λ³νμΈ UnsafeMutablePointer<T>
λ₯Ό μ¬μ©ν μ μμ΅λλ€. μ΄λ¬ν ν¬μΈν°λ€μ C μΈμ΄μ ν¬μΈν°μ μ μ¬νκ² μλνλ©°, λ©λͺ¨λ¦¬μ νΉμ μμΉλ₯Ό μ§μ κ°λ¦¬ν€λ λ° μ¬μ©λ©λλ€. μ΄λ¬ν μ κ·Ό λ°©μμ μΌλ°μ μΌλ‘ Swiftμ μμ μ± λ° μΆμν μμΉμ μ΄κΈλμ§λ§, μ±λ₯ μ΅μ ν, κΈ°μ‘΄ C κΈ°λ° μ½λμμ μνΈ μμ©, νΉμ μ μμ€ μμ€ν
μΈν°νμ΄μ€μμ μ§μ μ μΈ μνΈ μμ©μ΄ νμν κ²½μ°μ νμν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λλμ λ°μ΄ν° μ²λ¦¬λ κΈ°μ‘΄ C λΌμ΄λΈλ¬λ¦¬μ ν¨μλ₯Ό νΈμΆν λ μ΄λ¬ν λ°©μμ΄ μ μ©ν μ μμ΅λλ€.
μλλ μ£Όλμ΄ Java λ°±μλ κ°λ°μ λ©΄μ μ§λ¬Έμ λν λͺ¨λ² λ΅μ μμμ λλ€. μ΄ λ΅λ³λ€μ Javaμ λ©λͺ¨λ¦¬ κ΄λ¦¬μ κ΄λ ¨λ κΈ°λ³Έμ μΈ μ§μμ 보μ¬μ£Όλ λ° λͺ©μ μ΄ μμ΅λλ€.
Q2. Javaμμλ μΌλ°μ μΌλ‘ κ°λ°μκ° μ§μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό λ€λ£¨μ§ μμ΅λλ€. μ΄μ λν μ΄μ λ₯Ό μ€λͺ ν΄ μ£ΌμΈμ. λν, μλ λ©λͺ¨λ¦¬ κ΄λ¦¬λ μ΄λ€ μ₯μ μ μ 곡νλμ?
λ΅λ³: Javaμμ κ°λ°μκ° μ§μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό λ€λ£¨μ§ μλ μ£Όλ μ΄μ λ Javaκ° μλ λ©λͺ¨λ¦¬ κ΄λ¦¬ μμ€ν μΈ κ°λΉμ§ 컬λ μ (Garbage Collection, GC)μ μ 곡νκΈ° λλ¬Έμ λλ€. μ΄λ‘ μΈν΄ λ©λͺ¨λ¦¬ λμμ κ°μ μ€λ₯λ₯Ό λ°©μ§νκ³ , κ°λ°μκ° λ©λͺ¨λ¦¬ κ΄λ¦¬μ λλ μκ°κ³Ό λ Έλ ₯μ μ€μΌ μ μμ΅λλ€. μλ λ©λͺ¨λ¦¬ κ΄λ¦¬μ μ₯μ μΌλ‘λ μμ μ±μ ν₯μ, λ©λͺ¨λ¦¬ κ΄λ¦¬ μ€λ₯μ κ°μ, κ·Έλ¦¬κ³ κ°λ°μμ μμ°μ± ν₯μ λ±μ΄ μμ΅λλ€.
Q3. JVMμ λ©λͺ¨λ¦¬ λͺ¨λΈμ μ€λͺ ν΄ μ£ΌμΈμ. Heapκ³Ό Stack λ©λͺ¨λ¦¬ μμμ μ°¨μ΄μ μ 무μμ΄λ©°, κ°κ° μ΄λ€ μ’ λ₯μ λ°μ΄ν°λ₯Ό μ μ₯νλμ?
λ΅λ³: JVMμ λ©λͺ¨λ¦¬ λͺ¨λΈμ ν¬κ² Heap μμκ³Ό Stack μμμΌλ‘ λλ©λλ€. Heap μμμ λͺ¨λ μ€λ λμ κ±Έμ³ κ³΅μ λλ©°, μ£Όλ‘ κ°μ²΄μ ν΄λμ€μ λ©νλ°μ΄ν°κ° μ μ₯λ©λλ€. κ°λΉμ§ 컬λ μ μ μ΄ Heap μμμμ μ£Όλ‘ μλν©λλ€. λ°λ©΄, Stack μμμ μ€λ λ λ³λ‘ λ³λλ‘ ν λΉλλ©°, λ©μλ νΈμΆκ³Ό κ΄λ ¨λ μ§μ λ³μμ μ°Έμ‘° λ³μλ₯Ό μ μ₯ν©λλ€. Stackμ LIFO(Last In, First Out) λ°©μμΌλ‘ λ°μ΄ν°λ₯Ό κ΄λ¦¬ν©λλ€.
Q4. λκ·λͺ¨ λ°μ΄ν° μ²λ¦¬ μμ μ μνν λ Javaμμ λ©λͺ¨λ¦¬ ν¨μ¨μ μ΅μ ννλ λ°©λ²μλ μ΄λ€ κ²λ€μ΄ μλμ?
λ΅λ³: λκ·λͺ¨ λ°μ΄ν° μ²λ¦¬ μ λ©λͺ¨λ¦¬ ν¨μ¨μ μ΅μ ννκΈ° μν΄, κ°μ²΄ μ¬μ¬μ©, μ μ ν 컬λ μ μ ν, μ€νΈλ¦Ό API μ¬μ©, κ·Έλ¦¬κ³ λ©λͺ¨λ¦¬ μΊμ± μ λ΅ λ±μ μ μ©ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, κ°μ²΄ νλ§μ ν΅ν΄ λΉλ²ν μμ± λ° νκ΄΄λλ κ°μ²΄μ μμ± λΉμ©μ μ€μΌ μ μμ΅λλ€. λν, λ°μ΄ν° μμ λ°λΌ μ μ ν μλ£κ΅¬μ‘°λ₯Ό μ ννμ¬ λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ κ· νμκ² κ΄λ¦¬ν μ μμ΅λλ€.
Q5. JNI(Java Native Interface)λ 무μμ΄λ©°, μ μ¬μ©νλμ? Java μ ν리μΌμ΄μ μμ JNIλ₯Ό μ¬μ©νμ¬ λ€μ΄ν°λΈ μ½λμ μνΈ μμ©νλ μλ₯Ό λ€ μ μλμ?
λ΅λ³: JNI(Java Native Interface)λ Java μ½λ λ΄μμ Cλ C++κ³Ό κ°μ λ€μ΄ν°λΈ μ½λλ₯Ό νΈμΆνκ±°λ, λ°λλ‘ λ€μ΄ν°λΈ μ½λμμ Java μ½λλ₯Ό νΈμΆν μ μλ νλ‘κ·Έλλ° νλ μμν¬μ λλ€. JNIλ μμ€ν λ 벨μ 리μμ€λ λ κ±°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄μΌ ν λ, λλ μ±λ₯μμ μ΄μ λ‘ μ§μ νλμ¨μ΄λ₯Ό μ μ΄ν΄μΌ ν λ μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄,
κ³ μ±λ₯ κ·Έλν½ μ²λ¦¬λ νΉμ νλμ¨μ΄ μ₯μΉμμ μ§μ μ μΈ μνΈμμ©μ ꡬνν λ JNIλ₯Ό μ¬μ©ν μ μμ΅λλ€.
Q6. κ°λΉμ§ 컬λ μ (Garbage Collection)μ κΈ°λ³Έ μ리λ₯Ό μ€λͺ ν΄ μ£ΌμΈμ. Javaμμ κ°λΉμ§ 컬λ ν°μ μλ λ°©μμ μν₯μ λ―ΈμΉ μ μλ νλ‘κ·Έλλ° κ΄νμλ μ΄λ€ κ²λ€μ΄ μλμ?
λ΅λ³: κ°λΉμ§ 컬λ μ μ μ°Έμ‘°λμ§ μλ κ°μ²΄λ₯Ό μλμΌλ‘ κ²μΆνκ³ , μ΄λ₯Ό λ©λͺ¨λ¦¬μμ μ κ±°νμ¬ λ©λͺ¨λ¦¬λ₯Ό νμνλ νλ‘μΈμ€μ λλ€. Javaμμ κ°λΉμ§ 컬λ ν°μ ν¨μ¨μ±μ μν₯μ λ―ΈμΉ μ μλ νλ‘κ·Έλλ° κ΄νμΌλ‘λ, κ°μ²΄ μ°Έμ‘°λ₯Ό μ μ ν ν΄μ νλ κ², λμ©λ κ°μ²΄μ μ¬μ¬μ©, κ·Έλ¦¬κ³ μ μ ν 컬λ μ μ¬μ© λ±μ΄ μμ΅λλ€. λΆνμν κ°μ²΄ μ°Έμ‘°λ₯Ό λ¨κ²¨λμ§ μκ³ , λ©λͺ¨λ¦¬ μ¬μ©λμ΄ ν° κ°μ²΄λ νλ§ κΈ°λ²μ μ¬μ©νμ¬ κ΄λ¦¬ν¨μΌλ‘μ¨, κ°λΉμ§ 컬λ ν°μ λΆνλ₯Ό μ€μ΄κ³ μ ν리μΌμ΄μ μ μ±λ₯μ κ°μ ν μ μμ΅λλ€.