MIPS 어셈블리어

2023. 1. 2. 23:04컴퓨터구조

어셈블리어는 C언어 같은 고급언어에서 컴파일 되어서 binary code로 가기전 언어이다.

어셈블리어의 형식은

add t0, t1, t2 // a = b+c
sub t0, t1, t2 // a = b-c

로 표현한다. 해당 형식은 명령어마다 차이를 보이는 것도 있다.

 

MIPS ISA에서는 자주 쓰이는 data들을 레지스터에 넣어두면서 이용한다. 왜냐하면 속도 차이 때문인데 cpu에서 컴퓨터 하드 메모리로 접근하는데에는 매우 큰 속도 차이가 난다. 그러므로 속도 향상을 위해서 cpu 가까이에 있는 것이 유리하다는 것이다.

이 레지스터도 수가 너무 많아도 비용에 문제가 생기므로 MIPS 에서는 32bit 메모리를 32개를 이용한다 이것들을 register라고 한다.

mips register 0~31

즉 MIPS에서는 32bit data 즉 4 byte를 기본으로 이용하고 해당 단위를 "word" 라고 한다

어셈블리어 load save 명령어

load -> lw t0, 12 (s3)
save -> sw t0, 32(s3) 

load는 메모리에 있는 데이터를 레지스터로 옮기는 명령어이다.

save는 레지스터에 있는 데이터를 메모리로 옮기는 명령어이다.

12(s3) 이것은 s3 메모리 주소에서 12byte만큼 떨어진 주소를 의미하는 것이다.

즉, s3 옆에 숫자는 offset이고 s3를 base register라고 한다. 그것을 t0 레지스터에 옮기는 것이다.

sw는 t0에 있는 데이터를 s3 주소에서 32byte만큼 떨어진 곳에 저장하는 것이다.

 

code

A[12] = h + A[8];

어셈블리어

lw $to, 32($s3)
add $t0, $t0, $t1
sw $t0, 48($s3)

배열이라고 했을 때 8 의미는 8 * 4 byte 떨어진 주소를 가리킨다는 것이다. MIPS에서 기본 데이터 단위는 word 단위로 4byte이다. 그러므로 메모리 한칸씩 4byte씩 내려가게 되는 것이다.

'컴퓨터구조' 카테고리의 다른 글

MIPS-32 ISA 명령어 type  (0) 2023.01.14
MIPS 어셈블리어2  (0) 2023.01.14
빅엔디안, 리틀엔디안  (0) 2023.01.14
컴퓨터의 Execution Time 측정방법  (0) 2023.01.02
컴퓨터 성능에 대한 이해  (0) 2022.12.26