컴퓨터 구조 - Data Transfer Instruction
Computer
- processor
- 작고 빠른 임시의 register
- register가 data segment를 임시로 읽어오는 게 load 연산
- register에 있는 값을 메모리에 작성하는게 store 연산
- Memory
- text segement - 프로그램의 instruction 저장
- data segement - 변수 저장
Data transfer instruction
- 레지스터와 메모리간에 데이터를 옮기는 명령어
- store instruction
- register → memory
- sw 레지스터 번호, 메모리 주소
- 레지스터 번호 - 메모리에 저장하고 싶은 값을 가지고 있는 레지스터
- 메모리 주소 - destination operand, 상수(offset)와 base register를 적음
- memory adress = base register에 offset을 더한 값에 source operand 값을 저장
- load instruction
- memory → register
- lw 레지스터 번호, 메모리 주소
- 레지스터 번호 - destination operand, 값을 저장하는 레지스터
- 메모리 주소 - 저장하고 싶은 값
- sw, lw 는 R or I format?
- I format이 적당하다 - op rs rt constant
- op - sw, lw
- rt - destination(lw) or source(sw) register
- rs - base register number
- offset - -2의 15승 부터 2의 15승 -1 값 까지
MIPS assembler features
- Assembler directives
- .data <addr> : data segement의 시작을 알림
- .text <addr> : text segement의 시작을 알림, Instruction 저장
- initializing data segment
- .byte - 메모리의 주소는 1byte마다 증가한다 (byte addressing)
- .word - 4bytes 증, word를 만들 때 2가지 방향 가능
- Little endian vs big endian
- word alignment
- word라면 4bytes니까 4의 배수 주소 부터 시작함
- la instruction (pseudo instruction)
- load address를 의미
- 첫번째 레지스터 - 저장 될 레지스터
- 두번째 레지스터 - 사용하고 있는 lable이 나타내는 주소값
Memory Operands