일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MacOS
- mysql
- DS
- architecture
- Class
- Java
- MIPS
- instruction
- web
- Algorithm
- python
- github
- DB
- DATAPATH
- DoM
- for
- control
- XML
- computer
- javascript
- CSS
- html
- react
- data structure
- function
- while
- Pipelining
- php
- system
- Linux
- Today
- Total
목록Assembly (5)
YYYEJI
** C code를 기준 ** 아래 코드를 MIPS assembly code로 변환해 보겠습니다. i = 0; while (a[i] == k) i++; C to MIPS assembly addi $s0, $zero, 0 # i = 0 loop: sll $t0, $s0, 2 # t0 = i*4 addi $t0, $t0, $s2 # t0 = t0 + &a[0] lw $t1, 0($t0) # t1 = a[t0] bne $t1, $s1 exit # if (t1 != s1) goto exit addi $s0, $s0, 1 # i = i + 1 j loop # goto loop exit: $s0 - i $s1 - k $s2 - a[0] 코드를 하나하나 살펴보면 addi $s0, $zero, 0 # i = 0 우선 ..
** C code를 기준 ** 아래 코드를 MIPS assembly code로 변환해 보겠습니다. switch (s) { case0: a = a case1: a = a + 1 case2: a + a + 2 default: a = a + 3 } C to MIPS assembly addi $t0, $zero, 1 # t0 = 1 addi $t1, $zero, 2 # t0 = 2 beq $s2, $zero, case0 # if (s == 0) goto case0 beq $s2, $t0, case1 # if (s == 1) goto case1 beq $s2, $t1, case2 # if (s == 2) goto case2 addi $s0, $zero, 3 # a = a + 3 j exit # goto exit ..
** C code를 기준 ** array에서 값을 가져오고 싶을 때 a = A[1]라고 작성을 하고, array에 저장하고 싶을 땐 A[1] = a라고 작성을 하게 됩니다. c 코드를 assembly code로 변환을 해보겠습니다. A[4] = A[8] + 4 lw $t0, 32($s0) # t0 = A[8] addi $t0, $t0, 4 # t0 = t0 + 4 = A[8] + 4 sw $t0, 16($s0) # A[4] = t0 $s0는 A[0]를 가르킵니다. 한 줄씩 살펴보면 lw $t0, 32($s0) # t0 = A[8] $t0에 A[8]의 값을 가져와서 저장하는데 32 값은 4*8입니다. (1 word가 4bytes이기 때문입니다.) addi $t0, $t0, 4 # t0 = t0 + 4 = ..
아래 코드를 가지고 설명하겠습니다. ✓ 코드를 작성할 땐 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이 존재합니다...
Levels of Code High Level Language Program ↓ Assembly Language Program ↓ Machine Language Program How to translate ? ? ? When high-level language is translated into assembly language, to use a compiler. When assembly language is tranlated into machine language, to use an assembler. High-lever language (Machine independent) temp = a; a = b; b = temp; Assembly language lw $15, 0($2) lw $16, 4($2) ..