일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- samsung
- 안드로이드
- naver
- Galaxy
- 파이썬
- java
- RESOLVE
- 다빈치
- Apple
- 애플
- 리졸브
- 삼성
- 갤럭시
- 영상편집
- HTML
- 분해
- Davinci Resolve
- Davinci
- 다빈치 리졸브
- 인공지능
- CSS
- 자가설치
- DIY
- 태그
- 종류
- tag
- Python
- C언어
- 세면대
- 욕실
- Today
- Total
IT 세상 해석하기
어셈블리어 시작전 간단히 알아야할 정보 본문
어셈블리어 시작전 간단히 알아야할 정보
▶ 어셈블리 언어는 ADD, MOV, SUB, CALL과 같은 짧은 니모닉으로 작성된 문장들임
▶ 어셈블리 언어 명령어는 하나의 기계어 명령어와 대응됨
▶ 고급언어(C++, JAVA)는 어셈블리어와 기계어와 일대다(one to many) 관계를 갖는다.
<<고급언어와 어셈블리어>>
(고급언어)
int Y;
int X = (Y + 4) * 3;
(어셈블리어)
mov eax,Y : move Y to the EAX register
add eax,4 : add 4 to the EAX register
mov ebx,3 : move 3 to the EBX register
imul ebx : multiply EAX by EBX
mov X, eax : move EAX to X
※ (레지스터(register)는 연산의 중간 결과를 저장하는 CPU에 있는 이름이 붙여진 저장공간)
▶ 어셈블리어의 장점
- 임베디드(embedded) 프로그래밍에 적합 [소량의 메모리에 저장될 수 있는 짧은 프로그램]
어셈블리어는 메모리를 경제적으로 사용할수 있다.
- 시뮬레이션, 하드웨어 모니터링과 같은 정확한 타이밀과 응답을 요구하는 실시간 응용 프로그램에 적합
[프로그램의 실행 코드를 정확하게 지정하도록 하게 한다.]
- 비트단위 조작과 데이터 암호화와 같은 저수준의 작업을 할 수 있다.
[응용 프로그래머는 저수준 작업을 달성하기 위해서 어셈블리 언어로 작성된 서브루틴을 자주 호출할 것이다.]
- 컴퓨터 하드웨어, 운영체제, 응용 프로그램 간의 상호작용에 대해 전체적으로 이해를 하는 데 도움을 줌
- 장비의 장치 드라이버를 만들수 있다.
응용 프로그램 유형 | 고급 언어 | 어셈블리어 |
단일 플랫폼용으로 작성된 중간 규모에서 대규모까지의 사무용 응용 소프트웨어 | 코드의 많은 부분을 쉽게 구성하고 유지 할 수 있는 형식 구조 | 최소한의 형식 구조, 다양한 수준의 경험을 가진 프로그래머들이 필요하다. 기존의 코드를 유지하기가 어렵다. |
하드웨어 장치 드라이버 | 언어는 하드웨어의 직접 접근을 제공하지 않을 수 있다. 제공한다고 할지라도 쉽지 않는 코딩 기술이 필요하며 디 때문에 유지하기가 힘들다. | 하드웨어 접근은 직접적이고 간단하다. 프로그램이 짧고 문서화가 잘 되어 있으면 유지하기가 쉽다. |
다양한 플랫폼용으로 작성된 사무용 으용 프로그램 | 대개 이식성이 있다. 소스 코드는 최소한의 변경으로 대상 운영체제에서 다시 컴파일될 수 있다. | 다른 구문의 어셈블러를 사용하여 각 플랫폼에 대해서 개별적으로 코딩해야 한다. 유지하기가 어렵다. |
하드웨어의 직접 접근이 필요한 임베디드 시스템과 컴퓨터 | 매우 많은 실행 코드를 만들며 효율적으로 실행되지 않을 수 있다. | 실행 코드가 작고 빠르게 실행되므로 이상적이다. |
★ 이식성(portable)이란?
소스 프로그램을 컴파일하여 다양한 컴퓨터 시스템에서 실행 될 수 있는 언어
▶ 어셈블러와 링커, 디버거
◆ 어셈블러 : 어셈블리어로 작성된 소스 코드 프로그램을 기계어로 변환하는 유틸리티
◆ 링커 : 어셈블러가 생성한 각 파일들을 하나의 실행 프로그램으로 합치는 유틸리티 프로그램
◆ 디버거(Debugger) : 프로그램 실행 동안 프로그램을 단계적으로 실행하고 레지스터와 메모리를 살펴보게함