컴퓨터는 문자를 어떻게 이해하고 있을까요?
문자 집합 : 컴퓨터는 문자집합에 속해있는 문자를 이해할수 있음.
문자 인코딩 : 문자라도 0과 1로 변환되어야 이해
문자 디코딩 : 사람이 볼수 있도록 디코딩
아스키 코드는 초창기 문자중 하나로, 2의 7승 즉, 128개의 문자들만 표현 가능
하지만 이걸로 한글을 만들기에는 부족했다.
한글 인코딩 방식중에는 두가지 방식이 있다.
완성형 인코딩 : 하나의 글자에 고유한 코드를 부여하는 인코딩 방식
조합형 인코딩 : 초성, 중성, 종성 비트열을 할달하여, 글자코드를 완성하는 방식
EUC-KR은 완성형 인코딩이며, 2350개의 한글단어를 표시할 수 있으나, 꿹 , 믜 글자는 표시가 불가능 했다.
그래서 확장된 CP949 방식도 나왔으나, 한글 전체를 표현하기에는 역부족이였다.
시간은 흘러, 다국어시대가 되었다.
하나의 웹사이트에서는 로컬라이징이 되기 시작했다.
그렇게 모든 문자집합과 통일된 표준 인코딩 방식이 필요했고, 유니코드 가 탄생했다.
유니코드에는 여러가지 방식이 있다.
UTF-8, UTF-16, UTF-32는 부여된 값을 인코딩하는, 완성형 방식이다.
JAVA, C같은 언어는 컴퓨터에서 이해하지못한다.
사람들을 위해 만들어진 언어를 고급 언어라고 칭한다.
반대로 기계를 위해 만들어진, 0과 1에 가까운 언어를 저급언어라고 칭한다.
이중, 저급언어중 유명한것은 어셈블리어 다.
게임 개발, 정보분야, 하드웨어 기술쪽의 개발자들에게 어셈블리어는 '관찰의 대상'이다.
가장 근본적인 단계에서부터 추척하고, 관찰할 수 있다.
컴파일의 대표적인 언어는 C, Java가 있으며, 저급언어로 변환되는 과정을 컴파일이라고 합니다.
또한 컴파일을 수행해주는 도구는 컴파일러 라고 합니다.
컴파일에 성공하게 되면, 저급언어로 변환되는데, 이를 목적 코드(object code)라고 합니다.
이와 반대로 인터프리터는 한 줄씩 실행되는 고급 언어입니다.
인터프리터는 한줄씩 저급언어로 변환하여 실행해주는 도구를 인터프리터라고 하며, 변환 시간을 기다릴 필가 없습니다.
또한, N번째 오류가 있어도, N-1번째까지 올바르게 수행됩니다.
실행 코드로 이루어진 코드는 실행파일, 목적코드로 이루어진 코드는 목적 파일이라고 부른다.
목적 파일과 실행파일은 같은 의미일까?
목적코드가 실행파일이 되려면 링킹이라는 작업이 필요하다.
둘다 컴파일은 가능하지만, 먹다에서 Class 사람을 호출해야하기 때문이다.
이러한 작업을 링킹이라 한다.
저수준 언어는 하나하나가 명령어로 되어있다.
"학생들 다음주까지 과제를 제출하세요"
"자기야 우리 뽀뽀해"
"아들아 내일 축구하자"
컴퓨터 속 명령어도 마찬가지로, "무엇을 대상으로 작동을 수행해라" 구조이다.
연산하라는 명령을 연산 코드라 하며, 연산할 데이터를 오퍼랜드 라고 한다.
또한, 오퍼랜드는 메모리 주소나, 레지스터 이름이 담기기에, 주소필드라고 부르기도 한다.
이중, 오퍼랜드 수에 따라 명칭이 바뀌는데, 아래와 같다.
명령어의 오퍼랜드 필드에 메모리나 레지스터의 주소를 담는경우가 많은데, 데이터 그자체를 넣으면 되지않을까?
왜냐면 명령어의 크기는 정해져있기 때문이다.
이처럼 메모리 주소값, 레지스터의 이름을 넣는것이 공간을 크게 활용할 수 있다.
데이터가 저장된 위치를 유효주소라고 하는데, 데이터위치를 찾는 방식을 주소 지정 방식이라고 한다.
현재 CPU는 다양한 주소지정 방식을 사용하는데 총 5가지만 알아보자.
즉시 주소 지정 방식
레지스터에 저장 안하고 오퍼랜드 필드에 명시하는 방식이다.
직접 주소 지정 방식
주소를 입력하는 방식이다.
간접 주소 지정 방식
주소에 주소를 넣는 방식이다. 용량을 크게 사용할수 있지만, 더 느리다.
레지스터 주소 지정 방식
메모리에 접근하는것보다 CPU 내부에 있는 레지스터에 접근하는것이 더 빠르다.
레지스터 간접주소 지정 방식
메모리에 한번 접근하기때문에, 간접 주소 지정방식보다 더 빠르다.
스텍은 한쪽이 막혀있는 통으로, Last In First Out 자료구조라고 한다.
이때, PUSH라는 명령어는 새로운 데이터를 저장하는 명령어이며, POP은 마지막에 저장한 데이터를 꺼낸다.
큐는 양쪽이 뜷려있는 통으로, First In First Out 자료 구조이다.