명령어
소스 코드와 명령어
고급 언어와 저급 언어
우리가 사용하는 프로그래밍 언어 = 고급 언어 컴퓨터가 이해하고 실행가능한 언어 = 저급 언어
∴ 소스 코드 실행 과정 : 고급 언어 ➡️ 변환 ➡️ 저급 언어
저급 언어의 종류로는 기계어, 어셈블리어 총 2가지
기계어 : 0과 1로 이루어진 명령어 어셈블리어 : 기계어를 보기 편한 형태로 번역한 언어
임베디드 개발자, 게임 개발자, 정보 보안 분야 개발자등이 어셈블리어를 많이 이용
어셈블리어를 이해해야 컴퓨터가 프로그램을 어떤 과정으로 실행하고 어떤 절차로 작동하는지 관찰할수 있으므로
개발자들에게 어셈블리어는 '작성의 대상' + '관찰의 대상'
컴파일 언어와 인터프리터 언어
컴파일 언어 = 고급 언어인 소스 코드 전체를 저급 언어로 변환
이 과정을 컴파일이라하며, 컴파일에 성공하면 컴퓨터가 이해하는 저급 언어인 목적 코드가 생성됨
컴파일 방식은 소스 코드 전체를 변환하기 때문에 소스 코드에 오류가 한줄이라도 있을시 컴파일에 실패함
대표적 언어 : C언어
인터프린터 언어 = 소스 코드를 한줄씩 저급 언어로 변환
인터프리터 언어는 소스 코드를 한줄씩 실행하기 때문에 소스 코드 n줄에 오류가 있어도 코드 전체가 변환이 실패되는 컴파일 방식관 달리 n-1줄까진 변환이 됨
대표적 언어 : Python
실행 속도 : 소스 코드 전체를 변환하는 컴파일 언어 > 소스 코드를 한줄씩 변환하는 인터프리터 언어
명령어의 구조
연산 코드와 오퍼랜드
명령어가 수행할 연산 = 연산 코드(연산자) ex: 데이터 전송, 산술/논리 연산, 제어 흐름 변경, 입출력 제어
연산에 사용할 데이터, 데이터 위치 = 오퍼랜드(피연산자)
연산 코드가 담기는 영역 = 연산 코드 필드 오퍼랜드가 담기는 영역 = 오퍼랜드 필드
오퍼랜드는 하나도 없을수도 있고, n개가 있을수도 있음 = n-주소 명령어
연산의 대상이 되는 데이터가 저장된 위치 = 유효 주소
유효 주소를 사용하는 이유? = 유효 주소를 사용하면 표현할수 있는 데이터 크기는 유효 주소가 가리키는 메모리 공간만큼 커짐
이런 유효 주소를 찾는 방법 = 주소 지정 방식