컴퓨터 언어는 명령어(instructions)로 구성돼있으며 각 컴퓨터는 자신만의 명령어 목록(instruction set)으로 구성돼있다.
대표적인 instruction set으로는 arm, intel x86, MIPS 등이 있다.
하드웨어의 기술은 유사한 기본 원리에 기반하고, 모든 하드웨어 기술은 몇 가지 기본 작업을 수행해야하기 때문에 각각의 instructions set은 매우 유사하다.
MIPS CPU에는 32개의 레지스터가 있고, 각 레지스터의 크기는 32bit이다. 레지스터는 0~31의 이름을 가지며 각 레지스터는 고유한 이름과 용도를 지닌다. 레지스터를 통해 데이터를 메모리에서 가지고 오는 비용을 줄일 수 있지만, 레지스터의 크기는 한정돼있기에 효율적으로 사용해야한다.
g+h를 t0에 저장하고, i+j를 t1에 저장한 다음 t0에서 t1을 뺀 값을 s0에 저장한다.
다만, 레지스터의 크기는 한정적이기 때문에 배열과 같은 복잡하고 큰 데이터 구조는 레지스터에 저장할 수 없다. 따라서 데이터 구조는 메모리에 저장돼야 하는데, MIPS의 피연산자는 레지스터이므로 레지스터-메모리 간의 데이터 전송 명령어가 필요하다.
load 명령어는 메모리 위치에서 레지스터로, store 명령어는 레지스터에서 메모리위치로 데이터를 전송하며 메모리 위치는 주소값을 사용한다.
load
lw [로드될 레지스터] [메모리 주소를 지정하는 레지스터]
예를 들어, lw $s2, 2($s1) 은 s1의 메모리 주소에서 2칸만큼 떨어진( $s1 + 2 ) 곳에 저장된 데이터를 s2에 저장한다.
store
sw [저장될 레지스터] [메모리 주소를 지정하는 레지스터]
예를 들어, sw $s2, 2($s1) 은 s1의 메모리 주소에서 2칸만큼 떨어진($s1 + 2) 곳에 s2의 데이터를 저장한다.
* 명령어 정리
산술 연산 명령어:
* add $s1, $s2, $s3 : $s1 = $s2 + $s3
* sub $s1, $s2, $s3 : $s1 = $s2 - $s3
* addi $s3, $s3, 4 : $s3 = $s3 + 4
데이터 전송 명령어:
* lw $t0, 8($s3) : 임시 레지스터 $t0에 A[8]을 로드
* sw $t0, 12($s3) : A[12]에 $t0 레지스터 값을 저장
'학교강의필기장 > 컴퓨터구조' 카테고리의 다른 글
컴퓨터구조[6]: 함수(프로시저)와 스택 포인터 2 - 재귀함수에서의 어셈블리 (0) | 2023.04.09 |
---|---|
컴퓨터구조[5] : 함수(프로시저)와 스택 포인터 1 (0) | 2023.04.09 |
컴퓨터구조[4] : shift 연산과 조건문, 반복문 (0) | 2023.04.06 |
컴퓨터구조[3] : R-type & I-type (0) | 2023.04.06 |
컴퓨터구조[1] : 시스템 소프트웨어 개요와 성능 판단 지표 (0) | 2023.04.06 |