일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- javascript
- html
- web
- DS
- Pipelining
- control
- while
- php
- function
- github
- Java
- instruction
- MIPS
- CSS
- system
- computer
- react
- python
- mysql
- XML
- for
- Algorithm
- DoM
- MacOS
- DB
- architecture
- Linux
- Class
- data structure
- DATAPATH
- Today
- Total
목록MIPS (35)
YYYEJI
① Arithmetic instruction Format Instruction Format Meaning R ADD ADD rd, rs, rt rd ← rs+ rt R SUB SUB rd, rs, rt rd ← rs - rt I ADDI ADDI rt, rs, imm16 rt ← rs + se(imm16) R SLT SLT rd, rs, rt rd ← (rs
아래 코드를 가지고 설명하겠습니다. ✓ 코드를 작성할 땐 textEdit(메모장), visual Studio 등을 사용하시면 됩니다. ↓↓↓ C language code ↓↓↓ #include int main(){ printf("Hello World!!!\n"); return 0; } ↓↓↓ Assembly language code ↓↓↓ # test.s # print "Hello World!!!" .data str: .asciiz "\nHello, World!\n" .text main: li $v0, 4 la $a0, str syscall li $v0, 10 syscall pseudo assembly instruction MIPS 언어에는 pseudo assembly instruction이 존재합니다...
OtSpim 사용법에 대해서 알아보겠습니다. ↓↓↓ 설치를 위해서 링크를 클릭해 주세요 ↓↓↓ https://yyyeji.tistory.com/149 [MacOS] OtSpim 다운로드하기 Spim 이란? MIPS chip이 아니여도 assembly 코드를 읽고 실행시켜 주는 simulator입니다. 여러 OS(window, mac os, linux)에서 한 줄씩 실행시켜 줍니다. (interface) (앞에 붙은 Ot는 최신 버전을 뜻합니다.) ↓.. yyyeji.tistory.com 아래 사진들은 Otspim을 실행했을 때 나오는 첫 화면들입니다. ✓ 새로운 파일을 생성할 때 쓰는 확장자는 .a or .s or .asm 입니다. ✓ assembly 언어가 화면에 뜰 때 정확히 일치하지 않을 수도 있습..
Spim 이란? MIPS chip이 아니여도 assembly 코드를 읽고 실행시켜 주는 simulator입니다. 여러 OS(window, mac os, linux)에서 코드를 한 줄씩 실행시켜 줍니다. (interface) (앞에 붙은 Ot는 최신 버전을 뜻합니다.) ↓↓↓ 아래 링크를 클릭해 주세요 ↓↓↓ https://sourceforge.net/projects/spimsimulator/files/ spim mips simulator - Browse Files at SourceForge.net This directory contains compiled, installable copies of Spim for various operating systems: QtSpim: QtSpim_*_Windows...
① BEQ / BNE 16-bit Offset ② J 26-bit address ③ JR 32-bit address 많은 거리를 jump하고 싶을 땐 많은 address를 가지고 있는 ③을 이용해라. ↓↓↓ BEQ / BNE ↓↓↓ https://yyyeji.tistory.com/120 [CS] MIPS Conditional branch Instruction (BEQ, BNE) ① BEQ - Branch if Equal Ex) BEQ $s1, $s2, label # if($s1 == $s2) PC op = 4 rs = 17 rt = 18 offset (word count) $s1의 값과 $s2의 값이 같으면 label의 값이 계산되어서 PC에 들어갑니다. ② BNE - Br.. yyyeji.tistory..
JUMP - 16bits 새로운 target 주소(PC)로 점프하는 instruction입니다. Ex) J label → PC = target address (Memory addressing mode와 굉장히 밀접한 관련이 있다.) op = 2 word address (Jump instruction의 op code는 2) Jump Register - 26bits JR $ra # PC ← $ra ( $ra → 31 register) op = 0 rs = 31 rt = 0 rd = 0 shamt = 0 func = 8 (R type 이기 때문에 op code는 0) (function code가 8이면 JR instruction) ($ra가 31번째 있기 때문에 rs가 31번) (나머지는 0으로 채워줌) Ju..
① BEQ - Branch if Equal Ex) BEQ $s1, $s2, label # if($s1 == $s2) PC op = 4 rs = 17 rt = 18 offset (word count) $s1의 값과 $s2의 값이 같으면 label의 값이 계산되어서 PC에 들어갑니다. ② BNE - Branch if Not Equal Ex) BNE $s1, $s2, label # if($s1 != $s2) PC op = 5 rs = 17 rt = 18 offset (word count) $s1의 값과 $s2의 값이 다르면 label의 값이 계산되어서 PC에 들어갑니다. ◡̈
① Load Memory → Register Ex) LW $s1, 8($s0) # $s1 ← Memory[$s0 + 8] ② Store Register → Memory Ex) SW $s1, 12($s0) # Memory[$s0 + 12] ← $s1 C code를 assembly code로 바꾸는 예제를 살펴보겠습니다. C code A[8] = a + A[8] Assembly code # A[0]의 주소가 $s3에 있다고 가정 # a의 값은 $s2에 있다고 가정 lw $t0, 32($s3) # A[8]은 array의 8번째 이면서 4bytes씩 할당되어 있기 때문에 4*8위치에 있는 $s3가 됩니다. # $t0 ← A[8] add $t0, $s2, $t0 # $t0 ← $s0 + $t0 sw $t0, 32..