본문 바로가기

공부방/Upstage AI Lab 4기

7/17 컴퓨터 공학 개론 | 컴퓨터 구조 1

명령어

기계어와 어셈블리어는 cpu와 컴파일러의 종류에 따라서 달라질 수도 있다. 

같은 코드라도, 명령어에 사용될 수 있는 오퍼랜드가 몇 개인지에 따라서 같은 코드를 실행하는 명령어의 개수가 달라질 수 있다. (=cpu가 얼마나 복잡한 명령어를 지원하는지에 따라서 명령어의 개수가 달라질 수 있다.)
오피코드 - 오퍼랜드 0개
오피코드 - 오퍼랜드 1개
오피코드 - 오퍼랜드 2개
오피코드 - 오퍼랜드 3개
예를 들어서, 오퍼랜드 2개를 가진 경우에는 4단계(4개의 명령어로)에 걸쳐 실행되는데 오퍼랜드 3개가 있으면 2단계(2개의 명령어)로만 실행될 수도 있다.  

오퍼랜드에 대상(값)이 써있을 수도 있고, 대상의 위치(값이 들어있는 '주소')가 적혀있을 수도 있어. 
ex) 더해라 | 메모리 1 안의 값, 메모리 3 안의 값
왜냐하면 명령어의 길이는 한정되어 있기 때문에!


주소 지정

유효 주소를 찾는 방법이다. (cpu보다 다를 수 있음)

주소 지정하는 5가지 방법 : 즉시 주소 지정, 직접 주소 지정, 간접 주소 지정, 레지스터 주소 지정, 레지스터 간접 주소 지정

즉시는 오퍼랜드 필드에 값을 바로 넣는 거
직접은 오퍼랜드 필드에 값(데이터)이 저장된 메모리 주소를 넣는 것 - 근데 메모리 주소가 넘 커서 오퍼랜드 필드에 다 안들어간다면?
간접을 쓸 수 있음. 간접은 오퍼랜드 필드에 유효 주소의 주소를 명시. 대신 속도 느림.
레지스터  주소 지정은 레지스터에 주소를 적는 것이고, 레지스터 안에 있으니까 메모리보다 접근하는 속도가 빠름. 
레지스터 간접 주소 지정은 오퍼랜드 필드에 레지스터 주소를 적어놓고, 레지스터 주소로 가면 거기에 메모리 주소를 적어놓고, 메모리 안에 데이터가 있는 것. 

(참고)
cpu가 레지스터에 접근하는 속도 (빠름) > cpu가 메모리에 접근하는 속도 (느림). 레지스터로 접근해서 처리할 수 있다면 그게 나음. 

어셈블리 코드를 보면 대부분 레지스터 이름이 많이 오퍼랜드 안에 들어가 있다.