📖 CS/시스템소프트웨어5 💾시소실 - MIPS(ISA) C언어와 MIPS 어셈블리 언어 c언어로 작성된 고급 언어가 MIPS에서 어셈블리 언어로 바뀌는가? 초록색(C언어) =>(컴파일러) => 노란색 (어셈블리 언어) g h를 더해야 하니까 t0 임시 레지스터에 s1 s2더해서 저장 i j 똑같이 두 값을 연산하는 마지막 줄 (s0에 저장) 변수들, 배열의 시작 위치는 이미 레지스터에 올라와 있는 상황 배열 a[i]의 값은 어떻게 메모리에서 가져올까? 배열의 시작 위치+i 를 해서 (이떄 정수형 배열이면 정수형 크기인 4를 곱해서 더해야 함)(더하기가 더 빨라서 곱셈 대신 덧셈을 하기도) 4i라는 값을 t1이 가지고 있게 됨 노란글자들(각 변수가 저 레지스터에 올라와 잇음) 브랜치를 함 bne : 같지 않으면 Else로 가라 Exit으로 가게 (else 점프) ijk 배열 시작위치 레지스터.. 2023. 9. 14. 💾시소실 - MIPS(ISA) 연산별 비트 구조 보호되어 있는 글 입니다. 2023. 9. 14. 💾시소실 - MIPS(ISA) 비트 포멧,산술연산,논리연산, Data Transfer 연산,branch&jump 연산 비트 포맷 MIPS의 instruction은 모두 32비트 포맷으로 구성됨 메모리 : 4 기가바이트 메모리 용량이랑 instruction 크기가 32비트로 같은데 어떻게 메모리 주소를 표시함? 메모리는 직접 하지 않고 레지스터로 올린 후에 레지스터 주소를 표시 (느림) 그래서 메모리 직접접근은 Data Transfer instructions로 한정 연산 : 6비트 / 피연산자 5비트/ MIPS의 산술연산 저 이그잼플 번호들이 레지스터 (어셈블리 언어) 덧셈 뺄셍 맨 밑 add immediate 기계어 자체에 숫자가 들어가 있음 instruction에 값이 들어있는 게 아니라 주소가 잇는거! 근데 immediate는 다른 거 (빠르단소리) 32비트 꽉 채워서 쓰게 됨 곱셈은 32비트 32비트 연산 시 64.. 2023. 9. 11. 💾시소실 - MIPS(ISA) 레지스터 및 메모리 모델 MIPS의 레지스터 모델 정수 연산을 위한 레지스터 4바이트 32개 ㅠ 32 = 2^5 // 5비트가 있으면 각 레지스터 구분 가능 MIPS의 메모리 모델 바이트 단위로 주소가 매겨짐 맨 밑에는 다 0 (16진수로 표시함) 표현 가능한 메모리에 크기 2^32바이트까지 주소 구분이 가능(메모리 주소길이) 4바이트가 1워드 ( 2^30 워드) 메모리 주소를 나타내기 위해서 32비트가 제공된다. 기계어(instruction)의 길이가 균일함 (mips에서) 무조건 4바이트(32비트) mips 레지스터 이름 1. (대이터패스에서)핵심적인 연산/ 논리적인 일 레지스터 데이터밖에 쓸 수 없어서 연산하기 전에 메모리 데이타 레지스터에 올림 234부차적인 것 2. 얘만 메모리에 접근할 수 있음 (나머지는 레지스터)(느.. 2023. 9. 8. 💾시소실 - 시스템 소프트웨어와 ISA ALU 산술 연산 장치 : 연산을 수행하는 장치 (데이터패스인가) 레지스터 : 연산의 인풋 아웃풋을 잠시 저장하는 역할 메모리 : CPU의 작업 공간 , 기계어 담고 있음. (데이터 + 코드) IO 디바이스 : 입출력 장치 기계어를 구성하는 부분 연산 부분 : operator 피연산자 부분 : operend 1,2 레지스터와 메모리에서 수행 메모리의 코드를 cpu로 읽어가고 cpu에서 연산수행하고 (레지스터) 메모리의 데이터 부분에서 ㅕㄴ산 수행 결과 저장 파이프라인 기법 연산 수행하는 동안 다음 기계어를 읽어들임 순차적으로 하나 끝나면 하나 수행 이런 식으로 하지 않고 3번 하는데 새 1번 하고 함 더 빠름 ISA에 포함이 안 됨 캐시 메모리 cpu 메모리 사이에 있음 없어도 연산 이상이 없어야 함 속.. 2023. 9. 8. 이전 1 다음