[컴퓨터 구조] 명령어란?

2024. 4. 17. 22:56Computer Science/컴퓨터 구조

이제 더 현실적인 얘기로 컴퓨터를 이해해보고자 합니다.

 

컴퓨터란 무엇일까요? 만약, 누군가 컴퓨터에 대해 물어보면 우리는 어떻게 대답해야할까요?

저는 명령어를 처리하는 복잡한 계산기라고 대답할 것 같습니다. 

 

명령어란, 컴퓨터가 이해할 수 있는 언어 단위입니다. 인간은 프로그래밍 언어를 통해 프로그램을 만들고 컴퓨터로 실행시킬 수 있습니다. 정확히는 프로그래밍 언어로 소스 코드를 작성합니다. 소스 코드는 인간이 이해할 수 있도록 문법이 구성되어 있습니다. 하지만, 컴퓨터는 0과 1밖에 이해하지 못하기 때문에, 컴퓨터가 이해할 수 있도록 아래와 같은 변환해주는 과정이 필요합니다. 

프로그래밍 언어(A = 10) -> 어셈블리 언어(Store A 10)-> 기계어(1010 1010 1000 1010..)

 

인간이 이해하기 좋을 수록 고급언어라고 하며 컴퓨터에 가까운 언어는 저급언어라고 합니다.

고급언어 C, C++, Java, Python ..
저급언어 어셈블리어

 

어셈블리 언어에 대해 조금 더 알아보겠습니다.

명령어 = Opcode + Operand

 

Opcode란, Store, Add, Sub 등 연산자를 의미하고, Operand는 연산자를 적용할 대상을 의미합니다.

 

다시 위의 예제에서 어셈블리어를 보면,

Store -> Opcode, 

A, 10 -> Operand

임을 알 수 있습니다.

 

그런데 우리는 A를 변수명 그대로 사용하고 있습니다. 정확히 말하자면 어셈블리어로 변환될 때, A의 메모리 주소를 사용합니다. 이렇게 메모리의 주소값으로 데이터를 저장하거나 찾는 방법을 주소 지정 방식이라 합니다.