leehyeon-dv 님의 블로그
2.9 Communicating with People 본문
컴퓨터구조 및 설계/2장. language of the computer
2.9 Communicating with People
leehyeon-dv 2024. 11. 16. 21:39🔑Table of Contents
- Character Data - 문자 데이터
- Byte/Halfword Operations
- String Copy Example
- 궁금한 점
📌 Character Data
- Byte-encoded(1byte = 8bit) character sets
- ASCII : 128개의 문자표현 (95개의 그래픽, 33개의 제어용)
- Latin -1 : 256개의 문자표현 (ASCII보다 96개의 그래픽이 더 많음(191))
- Unicode : 32-bit character set
- java, C++ 등에서 쓰임
- 대부분의 국가 언어 문자와 기호를 표현 가능
- UTF-8, UTF-16 : 여러 길이의 인코딩이 존재함
📌Byte/Halfword Operations
- bitwise operation(비트연산)으로 1비트씩 옮길 수도 있지만, byte/halfword 단위로도 데이터 이동이 가능함
- MIPS byte/halfword load/store (바이트/하프워드 단위로도 데이터를 로드/저장 할수있음, 특히 String처리에서 유용)
- lb rt, offset(rs) lh rt,offset(rs)
- 부호있는 8/16비트들을 메모리에서 불러와 32비트로 확장한 후 레지스터(rt)에 저장한다
- 불러온 데이터의 하위 비트(LSB) 값에 따라 상위비트(MSB)가 0또는 1로 채워진다
- 불러온 값의 MSB = 1, 확장된 비트는 1로 채워진다
- 불러온 값의 MSB = 0, 확장된 비트는 0으로 채워진다
- lbu rt, offset(rs) lhu rt, offset(rs)
- 부호없는 8/16비트들을 메모리에서 불러와 32비트로 확장한 후 레지스터(rt)에 저장한다
- 불러온 데이터의 상위비트는 모두 0으로 채워진다
- sb rt, offset(rs) sh rt, offset(rs)
- rt의 하위 8/16비트의 값을 메모리 주소(offset(rs))에 저장한다
- lb rt, offset(rs) lh rt,offset(rs)
📌String Copy Example
* C code: ( null 문자(₩0)로 끝나는 string )
void strcpy (char x[], char y[]){
int i = 0;
while((x[i]=y[i]) != '\0'){ ++i; } }
//x,y -> $a0, $a1, i -> $s0
* MIPS code:
strcpy:
addi $sp, $sp, -4 # 스택 공간 확보
sw $s0, 0($sp) # $s0 값을 스택에 백업
add $s0, $zero, $zero # i=0
L1:
add $t1, $s0, $a1 # $t1 = $s0 + $a1 (소스 문자열의 주소 계산)
lbu $t2, 0($t1) # $t2 = y[i]
add $t3, $s0, $a0 # $t3 = $s0 + $a0 (목표 문자열의 주소 계산)
sb $t2, 0($t3) # x[i] = y[i]
beq $t2, $zero, L2 # exit loof if y[i] == 0
addi $s0, $s0, 1 # i = i+1
j L1 # 루프 반복
L2:
lw $s0, 0($sp) # $s0 값 복구
addi $sp, $sp, 4 # 스택 포인터 복구
jr $ra # 함수 반환
📍?<궁금한점>📍
🔎 왜 Byte/Halfword Load/Store가 중요한가?
MIPS에서는 기본적으로 32비트단위로 데이터를 처리하지만, 문자열이나 작은 데이터를 처리할때는 8비트나 16비트 단위로 접근하는 것이 효율적이다
'컴퓨터구조 및 설계 > 2장. language of the computer' 카테고리의 다른 글
2.10 MIPS Addressing for 32-Bit Immediates and Addresses (0) | 2024.11.17 |
---|---|
2.8 Supporting Procedures in Computer Hardware (0) | 2024.11.16 |
2.7 Instructions for Making Desicions (0) | 2024.11.16 |