Operating System
[System Software] C언어&어셈블리 예제
Sara.H
2021. 2. 7. 22:01
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 연산을 진행한다.
다음 주 정리할 내용들 :