본문 바로가기
📖 CS/컴퓨터구조

🖥컴퓨터구조 - 명령어, 컴퓨터 언어

by 정람지 2023. 9. 15.

하드웨어가 알아들을 수 있는 언어 : 명령어

명령어 집합 (instruction set)

 

기계어의 종류 : MIPS, ARMv7, Intel x86,ARMv8, 등

 

모든 컴이 같은 기본 원리 위에 구축된 하드웨어 기술로 만들어짐

하드웨어가 제공하는 기본적인 연산은 몇 가지 안 됨

컴 설계자는 하드웨어와 컴파일러 제작이 쉬우면서도 최소 비용에 최대 성능을 구현할 수 있는 언어를 찾아내고자 함


<하드웨어 연산>

 

MIPS 어셈블리 언어 (합)

add a, b, c

b와 c를 더하여 a에 넣으라는 뜻

 

MIPS 산술 연산은 항상 한 종류의 연산만 지시하며 항상 변수 3개를 가짐

설계 원칙 1 : 간단하게 하기 위해서는 규칙적인 것이 좋다

그래서 여러 변수의 합을 구할 때는 ( b,c,d,e를 a에 저장하기)

add a, b, c
add a, a, d
add a, a, e

이렇게 해야 함

 

한 줄에 명령어 하나씩만 들어감

 

sub a,b,c

뺄셈 명령어


<피연산자>

피연산자는 하드웨어로 직접 구현된 특수 위치 몇 곳에 있는 "레지스터" 만을 사용할 수 있음

MIPS에서 레지스터의 크기는 32비트임 ( = 1워드)

 

1바이트는 8비트 / 1워드는 4바이트 

 

보통 컴에는 32개의 레지스터가 잇음.

산술 연산자의 각 피연산자는 32개의  32비트 레지스터 중 하나여야 함

설계 원칙 2 : 작은 것이 더 빠르다.

레지스터가 많아지면 클럭 사이클 시간이 길어짐(하지만 32보다 줄인다고 해서 빨리자지 않음 주의)

 

MIPS에서 레지스터를 표현하는 법 : 달러 기호 + 두 글자

 

<메모리 피연산자>

단순 변수 외에 배열이나 구조체 같은 복잡한 자료에서 레지스터 개수보다 많은 데이터 원소가 있을 시 이런 구조는 어떻게 표현되고 사용되는가?

 

메모리에 보관됨

 

MIPS의 산술연산은 레지스터에서만 실행되므로 메모리와 레지스터 간에 데이터를 주고받는 명령어가 필요

: 데이터 전송 명령어

명령어는 메모리 주소를 지정해야 함

메모리에서 데이터의 위치를 찾기 위해서 배열의 시작 주소 + 인덱스 넘버를 씀

=>인덱스 번호 부분 : 상수 , 시작 주소 : 베이스 레지스터

 

메모리에서 레지스터로 데이터를 복사해 오는 데이터 전송 명령 : 적재

MIPS에서의 적재 명령어 : lw(load word)

적재 명령 : 연산자 이름+ 메모리에서 읽어 온 값을 저장할 레지스터 + 메모리 접근에 사용할 상수, 레지스터 로 구성