- 곱하기 연산의 경우, 레지스터를 두 개 써야 함. 일반적인 레지스터가 아닌, HI, LO 레지스터. 왜냐하면, 32비트 곱하기 32 비트를 하게 되면, 64비트가 되기 때문에. 그러므로 값을 32비트씩 나누어 담음.
- 나누기의 경우, 기본적으로 컴퓨터에서는 나머지를 몫과 나머지로 계산함. 따라서 몫을 LO 에 담고 나머지를 HI 에 담음.
- 이렇게 LO 와 HI 의 값을 일반 레지스터로 복사해 와 저장하는 명령어가 각각 move from HI 와 move from LO 임. $s1 ← HI 와 $s2 ← LO
- and, or, xor, andi, ori 는 모두 논리 연산자임. and 는 둘 다 1일 경우만 1 이고 or 은 둘 중 하나라도 1이면 1임. xor 은 홀수 개의 1 이 있을 때만 1. andi ori 의 경우 직접 수를 입력한 뒤 그것을 이진수로 바꿈.

- MIPS 에서는 메모리 직접 접근이 불가함. 즉 add 와 같은 연산자가 메모리에 직접 접근할 수가 없음. 따라서 메모리에서 레지스터로 일차적으로 값을 가져와야 함. 이 역할을 하는 것이 load 임. 또 연산을 하고 나서 레지스터에 저장된 값을 다시 메모리로 옮기는 작업을 해야 함. 이 역할을 하는 것이 store 임. 이때, 몇 바이트씩 옮기느냐에 따라, 4바이트를 옮긴다면 load word 를 쓰고, 1byte 만 옮긴다면 load byte unsingned 를 쓰게 됨.

맨 위 식을 설명하자면, $s2 에는 메모리의 주소값이 적혀 있음. 예를 들어 1000번지. 그럼 1000에 100을 더한 1100 번지의 메모리에 접근해서 그 값을 레지스터 $s1 에 저장함.
- 정리해서, MIPS 에서 모든 메모리 접근은 load, store 를 통해서만 가능함.
- 4byte 즉 32비트를 받아오는 word 의 경우 그럴 일이 없는데 만약 halfword 나 byte 단위로 load 할 경우, signed operation 의 경우 sign-extended 즉 부호로 앞의 빈 공간을 다 채워주고, unsigned operation 의 경우 zero-extension 을 진행함.
- Word address 는 4의 배수여야 하고, halfword address 는 2의 배수여야 함. 참고로 두 방식의 메모리는 혼용될 수 없음.

약간 if 문이라고 생각을 하면 되는데, Program Counter 의 준말이 PC 임. PC 는 다음에 수행할 명령어의 주소를 알려주는 역할을 함. 그리고 여기서는 지금 4바이트 즉 워드 단위임. equal 같은 경우에는 만약 레지스터1 과 2의 값이 서로 같으면, (참고로 원래 PC 값은 4바이트가 디폴트로 추가됨. 다음 명령어로 가야해서) 25워드만큼 이동한 주소로 가서 그 명령어를 실행해라는 것임. 반면 set on less than 의 경우 조건문이 참인 경우 레지스터1에 1을 넣고 아니면 레지스터1에 0을 넣으라는 의미임.

Jump 에는 두 가지 종류의 명령어가 있음. 첫 번째는 워드 단위로, pc 에게 해당 주소로 가라라고 워드 단위로 주기 때문에 *4해서 그 메모리 주소로 가야 하고, 레지스터 점프는 그냥 그 레지스터로 가면 됨. 즉 메모리에서의 점프와 레지스터에서의 점프 두 가지가 있음
