7강) MIPS Instruction Set Architecture VI - C언어와 MIPS 어셈블리언어
- 배열의 경우 시작주소를 레지스터에 저장한다.
- 시작 위치로부터 얼마나 떨어져 있는지 인덱스 i 를 보고 계산한다. 정수 배열의 경우 요소 요소 마다 4byte 씩 공간을 차지하게 되므로 i 에다가 4를 곱한 주소에 배열 시작 주소를 더한 곳으로 접근한다.
- 곱하기 4를 하는 과정 : 곱하기보다 더하기가 더 빠르므로 똑똑한 컴파일러는 곱하기 4를 하는 과정을 add 연산으로 대체한다. 따라서 처음에 루프가 시작되는 곳을 보면, t1 에다가 s3 를 두 번 더하고, t1 에다가 다시 t1 끼리 더한 값을 저장한다. 그리고 마지막으로 s6, 즉 배열의 시작 주소를 더해준다.
- t0 라는 레지스터에 메모리에서 불러온 워드를 load 하고 Branch Not Equal 연산을 통해서 비교를 해준다.
- 만약 탈출 조건이 성립하지 않았다면 Loop 표시로 다시 jump 연산을 진행한다.
다음 주 정리할 내용들 :
'Operating System' 카테고리의 다른 글
[System Software] MIPS Procedure Call (Cont'd) (0) | 2021.02.12 |
---|---|
[System Software] 프로그램의 메모리 주소 공간 구조 (0) | 2021.02.08 |
[System Software] 논리연산 & Data Transfer 연산 / Branch & Jump 연산 (0) | 2021.02.07 |
[System Software] MIPS Operators (0) | 2021.01.26 |
[System Software] ISA / MIPS (0) | 2021.01.24 |