isPowerfulBlog
[컴퓨터구조] #04 | data transfer 본문
임은진 교수님의 컴퓨터구조 lecture10을 학습하고 작성한 TIL입니다
MIPS Data Transfer Operations
sw
store instruction: register
→ memory
sw $., ..($.)
sw
store word$.
source operand in register..($.)
memory address = R[$.] + ..(offset)
sw $4, 8($5)
(5번 register가 가지고 있는 값 + 8)
= 4번 register에 저장된 값을 저장할 32-bit짜리 메모리 주소
lw
load instruction: memory
→ register
lw $., ..($.)
lw
load word$.
source operand in register..($.)
memory address = R[$.] + ..(offset)
✅ $. base register number
lw $4, 8($5)
(5번 register가 가지고 있는 값 + 8)에 저장된 값을 4번 register에 저장
MIPS I-format Instructions
| op(6bits) | rs(5bits) | rt(5bits) | offset(16bits) |
rt
sw source, lw destination register numberrs
base register numberoffset
-2^15 ~ (+2^15-1)memory address
Initializing Data Segment
.data
data segment가 시작된다
.byte
byte 형태의 값을 data segment에 저장
✅ char는 1byte
.word
word(4byte) 형태의 값을 data segment에 저장
✅ int는 4byte
✅ word 저장 시 메모리 주소를 4의 배수로 맞추기 위해 word alignment
.ascii / .asciiz
문자열 저장 / 문자열 + null 저장
.text
text 형태의 데이터 저장
MIPS 어셈블리 코드는 data segment에 작성할 수 X → text segment에 저장
.globl ~
다른 파일에서도 액세스 할 수 있게 전역으로 선언
label
segment의 이름
byte order
- little endian
작은 주소 인덱스에 해당하는 값이 word형태로 표현 시 뒤쪽에 - big endian
큰 주소 인덱스에 해당하는 값이 word형태로 표현 시 뒤쪽에
✅ SPIM에서는 memory 내용을 보여줄 때 word 단위로 보여준다.
참고
임은진 교수님 컴퓨터구조 강의안
2021년 벨로그 글 옮겨옴
'CS' 카테고리의 다른 글
[컴퓨터구조] #06 | slt (0) | 2023.10.16 |
---|---|
[컴퓨터구조] #05 | branch (0) | 2023.10.16 |
[컴퓨터구조] #03 | MIPS R/I-format (0) | 2023.10.16 |
[컴퓨터구조] #02 | Arithmetic for Computers (0) | 2023.10.16 |
[컴퓨터구조] #01 | MIPS 산술 논리 연산 명령어 (1) | 2023.10.16 |