어셈블리 ot소개 및 교재 : Assembly Language for x86 Processors

 

앞으로 학교에서 1학기동안 사용할 교재이다.. 영어강의인데 솔직히 교수님 설명 듣기에 조금 애먹었다...으악

 

 

아무튼 그래서 어셈블리란 뭘까

어셈블리는 우리가 흔히 사용하는 하이레벨 언어와 다르다.

하이레벨은 cpu를 신경 쓸 필요가 없지만, 어셈블리는 기계언어를 번역하기 때문에 cpu를 신경써야 한다. 

 

우리가 굳이 이렇게 cpu를 신경써가며 어셈블리를 공부해야 하는 이유가 있을까?

컴퓨터 구조, cpu의 기능, 운영체제의 함수 기능 등 하드웨어의 기초적인 부분과 연관되어 있으며 이를 기반으로 더 빠른 프로그래밍을 할 수 있기 때문에 배워야 한다.

 

 


 

 

각 컴퓨터에는 고유한 기계어(언어)가 있다. 우리는 그걸 L0 라고 부른다.

L0 는 하드웨어에서 직접 실행되고, 보다 인간 친화적인 언어로 기계어 위에 구성되어 있는 언어를  Language L1 이라 한다.

 

 

L1으로 작성된 프로그램은 두 가지 방법으로 실행될 수 있다.

 

Interpretation(해석)

해석은 L1 프로그램을 실행할 때 사용되는 방법 중 하나이다.

L0 프로그램은 L1 명령어를 하나씩 읽고 해석하여 해당 명령을 바로 실행한다.

대표적인 예로는 Python의 인터프리터나 Bash 셸이 있다.

 

Translation(번역)

L1 프로그램을 L0 기계어로 완전히 변환한 후에 실행하는 방법이다.

번역기는 L1 프로그램을 전체적으로 분석하여 해당 프로그램을 기계어로 변환하고, 이 변환된 프로그램이 하드웨어에서 실행된다.

대표적인 예로는 C나 C++와 같은 컴파일러 언어가 있다.

 

 

간단하게 요약하자면,

Interpretation은 프로그램을 실행할 때마다 명령을 해석하여 실행하고, Translation은 프로그램을 사전에 기계어로 변환한 후에 실행하는 방식이다.

 
 
 
 
 
이렇게 소개해주시고 (...반은 추가로 검색) ot를 마무리 하셨다.
 
개인적으로 게임개발에 관심있는 사람으로서..
 
옛~날에 마리오를 어셈블리 언어로 개발하여 방대한 볼륨을 단 몇kb 안에 다 집어넣어 출시했다는 이야기를 들었다.
 
요즘은 스팀에 나오는 d급 똥도 100mb는 기본인데 그 유명한 마리오가 단 몇 kb라는 이야기를 듣고 어셈블리 과목에 흥미가 마구 돋았다.

교수님께서 말하시는 영어들을 전부 잘 들을 수 있을지는 모르겠지만.. 열심히 수업 들어서 나도 어셈블리 언어로 게임 개발해보고싶다.