ICT/ν”„λ‘œκ·Έλž˜λ°

μ–΄μ…ˆλΈ”λ¦¬μ— λŒ€ν•΄ μ•Œμ•„λ³ΌκΉŒμš”?

μ•Œ 수 μ—†λŠ” μ‚¬μš©μž 2017. 7. 5. 16:45
λ°˜μ‘ν˜•

μ•ˆλ…•ν•˜μ„Έμš”~ ν‚΄κ΅°μž…λ‹ˆλ‹€.

 

였늘 μ œκ°€ μ†Œκ°œν•΄λ“œλ¦΄ λΆ„μ•ΌλŠ” μ–΄μ…ˆλΈ”λ¦¬ (Assembly)μž…λ‹ˆλ‹€.

 

μ–΄μ…ˆλΈ”λ¦¬μ— ν‰μ†Œμ— κ΄€μ‹¬μžˆκ±°λ‚˜ 배우고 싢은 뢄듀을 μœ„ν•΄ μ΄λ ‡κ²Œ μ€€λΉ„λ₯Ό ν•΄λ΄€μŠ΅λ‹ˆλ‹€.

 

그럼 μ§€κΈˆλΆ€ν„° μ–΄μ…ˆλΈ”λ¦¬μ— λŒ€ν•΄ ν¬μŠ€νŒ… μ‹œμž‘ν•˜κ² μŠ΅λ‹ˆλ‹€.

.

.

.

.

.

.

.

.

.

.

 

 

 

[μ–΄μ…ˆλΈ”λ¦¬ (Assembly)]

 

ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ ν•˜λ‚˜λ‘œ κΈ°κ³„μ–΄μ—μ„œ ν•œ 단계 μœ„μ˜ 언어이며 

기계어와 ν•¨κ»˜ 단 λ‘˜λΏμΈ 저급언어에 μ†ν•©λ‹ˆλ‹€.

 

κΈ°κ³„μ–΄λΌλŠ” 게 컴퓨터 κ΄€μ μ—μ„œ λ°”λ‘œ 읽을 수 μžˆλ‹€λŠ” 것 λΉΌκ³ λŠ” μΈκ°„μ˜ κ΄€μ μ—μ„œλŠ” 

μ‚¬μš©μ΄ λΆˆνŽΈν•œ 언어이기 λ•Œλ¬Έμ— 이λ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•΄ λ‚˜μ˜¨ 것이 μ–΄μ…ˆλΈ”λ¦¬μ–΄μž…λ‹ˆλ‹€. 

 

 

 

 

λ”°λΌμ„œ μ–΄μ…ˆλΈ”λ¦¬μ–΄μ˜ νŠΉμ§•μ€ 기계어 1라인당 μ–΄μ…ˆλΈ”λ¦¬ λͺ…λ Ήμ–΄κ°€ 

λŒ€λΆ€λΆ„ 1라인씩 λŒ€μ‘λ˜μ–΄ 있고 μ΄λ₯Ό 비ꡐ적 κ°„λ‹¨ν•˜κ²Œ μ§€ 수 μžˆλŠ” 

μ–΄μ…ˆλΈ”λŸ¬λ₯Ό 톡해 κΈ°κ³„μ–΄λ‘œ λ³€ν™˜λ˜λ„λ‘ ν•œ κ²ƒμž…λ‹ˆλ‹€. 

 

그리고 κΈ°κ³„μ–΄λŠ” CPUκ°€ μ±„νƒν•œ ISA에 따라 λ‹€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ—

μ–΄μ…ˆλΈ”λ¦¬μ–΄μ˜ λͺ…λ Ήμ–΄ μ—­μ‹œ ν†΅μΌλœ 규격이 μ—†μŠ΅λ‹ˆλ‹€. 

λ˜ν•œ 문법 μ•„ν‚€ν…μ²˜μ— λ”°λΌμ„œλ„ λ‹€λ₯΄κ³  μ–΄μ…ˆλΈ”λŸ¬μ˜ μ’…λ₯˜μ— λ”°λΌμ„œλ„ 

문법/맀크둜 등이 μ œκ°κ°μž…λ‹ˆλ‹€.

 

 

 

 

[μž₯점]

 

ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λ”°λ‘œ 주석을 달 수 있게 λ˜μ–΄ ν•œ 개 μ΄μƒμ˜ λͺ…λ Ή 집합이 톡틀어 

μ–΄λ–€ 역할을 ν•˜λŠ” 루틴인지 λ‚˜λ¦„λŒ€λ‘œ μ„€λͺ…을 써 놓을 수 μžˆμ–΄μ„œ 

ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜κΈ° 훨씬 μˆ˜μ›”ν•΄μ§‘λ‹ˆλ‹€.

 

계어에 λŒ€μ‘λ˜λŠ” μ–΄μ…ˆλΈ”λ¦¬ λͺ…λ Ήμ–΄ 이외에도 λ©”λͺ¨λ¦¬ μœ„μΉ˜λ‚˜ μ •λ ¬ 등을 

ν•  수 μžˆλŠ” μ§€μ‹œμ–΄λ₯Ό μ“Έ 수 있고, 

맀크둜 κΈ°λŠ₯을 μ΄μš©ν•˜μ—¬ 맀크둜 ν˜ΈμΆœμ„ 쉽고 νŽΈλ¦¬ν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

 

그둜 인해 κΈ°κ³„μ–΄λ‘œ 직접 μ½”λ”©ν•  λ•Œμ™€ λΉ„κ΅ν–ˆμ„ λ•Œ 

보닀 λ§Žμ€ μ†ŒμŠ€μ½”λ“œκ°€ ν¬ν•¨λœ ν”„λ‘œμ νŠΈλ₯Ό 무리 없이 κ°œλ°œν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

 

[단점]

 

μ–΄μ…ˆλΈ”λ¦¬μ–΄μ˜ 생산성이 λ†’μ•„μ§€λ©΄μ„œ 보닀 

λŒ€κ·œλͺ¨μ˜ μ†ŒμŠ€ μ½”λ“œλ₯Ό λ‹€λ£° 수 μžˆλŠ” ν™˜κ²½μ΄ μ‘°μ„±λ˜μ—ˆμ§€λ§Œ 

그래봀자 μ–΄λ””κΉŒμ§€λ‚˜ 기계어 λŒ€λΉ„ 생산성이 λ†’μ•„μ‘Œμ„ 뿐, 

κ³ κΈ‰ 언어에 λΉ„ν•˜λ©΄ 생산성이 맀우 λ–¨μ–΄μ§‘λ‹ˆλ‹€.

 

λ˜ν•œ μ–΄μ…ˆλΈ”λ¦¬μ–΄λŠ” μ–Έμ–΄λ₯Ό μ΄ν•΄ν•˜λŠ”λ° λ“€μ–΄κ°€λŠ” μ‹œκ°„μ€ 짧을지 λͺ°λΌλ„ 

μ–Έμ–΄λ₯Ό λ§ˆμŠ€ν„°ν•˜λŠ”λ° λ“€μ–΄κ°€λŠ” μ‹œκ°„μ€ CPU μ’…λ₯˜λ³„λ‘œ μ²œμ°¨λ§Œλ³„μž…λ‹ˆλ‹€.

 

AVR, PIC λ“±μ˜ λ‹¨μˆœν•œ CPU듀은 CPU의 ꡬ쑰가 λ‹¨μˆœν•˜μ—¬ μ‚¬λžŒμ΄ 코딩해도 

κ·ΈλŸ­μ €λŸ­ 칩의 퍼포먼슀λ₯Ό μ „λΆ€ λŒμ–΄λ‚Ό 수 μžˆμœΌλ‚˜

 x86 λ“±μ˜ κ³ μ„±λŠ₯ PC 및 μ›Œν¬μŠ€ν…Œμ΄μ…˜μš© CPU듀은 νŒŒμ΄ν”„λΌμΈ κΈ°λ²•μ΄λ‚˜ 슈퍼슀칼라 ꡬ쑰, 

μΊμ‹œ 같은 μ˜¨κ°– 속도ν–₯상 기법듀이 λ„μž…λΌ μžˆμ–΄ 

μ‚¬λžŒμ΄ κ·Έ μ„±λŠ₯을 μ „λΆ€ λŒμ–΄λ‚΄λŠ” 게 λΆˆκ°€λŠ₯에 κ°€κΉŒμ›Œμ‘ŒμŠ΅λ‹ˆλ‹€.

 

 

 

 

μ–΄μ…ˆλΈ”λ¦¬μ–΄λŠ” ν†΅μΌλœ 규격이 μ—†μœΌλ―€λ‘œ, λͺ¨λ“  ν”Œλž«νΌμ—μ„œ κ³΅ν†΅λœ 사항은 μ•„λ‹ˆλ‚˜ 

νŠΉλ³„νžˆ μš°λ¦¬λŠ” λŒ€λΆ€λΆ„ ν˜„μž¬ x86 을 많이 μ‚¬μš©ν•˜κ³  μžˆμœΌλ―€λ‘œ λΆ€μ—° μ„€λͺ…ν•˜μžλ©΄

 x86 CPU μ—μ„œλŠ” λ¬Έλ²•이 크게 인텔 방식과 AT&T λ°©μ‹μœΌλ‘œ λ‚˜λˆ μ§‘λ‹ˆλ‹€. 

인텔 방식은 가독성이 λ›°μ–΄λ‚˜κ³ , AT&T 방식은 가독성은 λ–¨μ–΄μ§€λ‚˜, 

 

인텔 방식보닀 쒀더 λ§Žμ€ 정보λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλ‹€κ³  μ„ ν˜Έν•˜λŠ” μ‚¬λžŒλ“€λ„ μžˆμŠ΅λ‹ˆλ‹€.

 

 

β€» λ‘€λŸ¬μ½”μŠ€ν„° 타이쿀

 

 

β€» λ°”λžŒμ˜ λ‚˜λΌ

 

 

참고둜 μ–΄μ…ˆλΈ”λ¦¬μ–΄λ‘œ ν†΅ν•΄μ„œ λ§Œλ“  ν”„λ‘œκ·Έλž¨μ„ μ†Œκ°œλ“œλ¦¬μžλ©΄

영ꡭ의 κ²Œμž„ 개발자 크리슀 μ†Œμ΄μ–΄κ°€ λ§Œλ“ 

 λ‘€λŸ¬μ½”μŠ€ν„° 타이ꡰ 1,2 & 트랜슀포트 νƒ€μ΄μΏ€μ΄λΌλŠ” κ²Œμž„μ„ κ°œλ°œν–ˆμœΌλ©°,

슈퍼패미콀 κ²Œμž„λ“€ 그리고 μ•ˆμ² μˆ˜μ˜ V3 λ°±μ‹ μ˜ ν† λŒ€μΈ V1이 

μ–΄μ…ˆλΈ”λ¦¬μ–΄μ˜ 기반으둜 κ°œλ°œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μš°λ¦¬λ‚˜λΌ 졜초의 κ΅­λ‚΄μ˜¨λΌμΈ κ²Œμž„ λ°”λžŒμ˜ λ‚˜λΌλ„ μ–΄μ…ˆλΈ”λ¦¬μ–΄λ‘œ μ½”λ”©λ˜μ–΄ λ‚˜μ™”μŠ΅λ‹ˆλ‹€.

 

 

이미지λ₯Ό ν΄λ¦­ν•˜μ‹œλ©΄ 1λŒ€1 μƒλ‹΄μ‹ μ²­μœΌλ‘œ μ—°κ²°μ΄ λ©λ‹ˆλ‹€.

λ°˜μ‘ν˜•