NOWS/Security

Firmware 이해하기 (1) MIPS 이해하기

emzei 2017. 9. 6. 17:29

(1) MIPS basic

- CISC vs. RISC


MIPS 

RISC : 

* 모든 inst 사이즈가 동일 (32bit - 4Byte) 코드 사이즈 줄이는데에 불리 

* 같은 면적의 CPU Die를 더 효율적으로 이용할 수 있음


Register:

* 레지스터 이름은 $로 시작한다

* $zero : /dev/zero와 용도가 비슷.  읽기전용. 읽으면 16진수 0x0 반환. 초기화 시 사용.

* load XX : 데이터 로드. lb, lw, li

cf. byte, word, immediate(const value)

* save XX : 데이터 저장. sb, sw, si

* branch XX : 분기. bne (branch not equal), be

* jump XX : 함수 호출 시 사용. JAL (jump and link), JALR(jump and link - register)

ex) JAL FunctionName : 지역함수 호출

ex) JALR RegisterName : 라이브러리 호출

* return address : $ra에 저장

* parameter : $a0, $a1, $a2, $a3

* return value : 

* move XX : 값 복사. 


MIPS Specialty - Branch Delay Slot

* 파이프라인 성능 개선위해 설계된 사항

* branch 문 실행 전 bubble 삽입을 통해 이미 가져온 명령어 수행

* 참고) https://en.wikipedia.org/wiki/Delay_slot#Branch_delay_slots

* 참고) https://cseweb.ucsd.edu/classes/wi02/cse141/c14branchHazard.ppt