IT 세상 해석하기

어셈블리어 시작전 간단히 알아야할 정보 본문

카테고리 없음

어셈블리어 시작전 간단히 알아야할 정보

ikohong 2019. 11. 23. 16:16
728x90
반응형

어셈블리어 시작전 간단히 알아야할 정보

 

▶ 어셈블리 언어는 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) : 프로그램 실행 동안 프로그램을 단계적으로 실행하고 레지스터와 메모리를 살펴보게함


728x90
반응형
Comments