WEEK2 Flashcards
컴퓨터는 오로지 0과 1만 이해한다 Yes or no ?
Yes
machine language (기계어) 란?
명령들을 이진수로 나타낸것
mips 에서 하나의 명령은 몇 비트 ?
32 bits
3 가지 instruction 형식 (format) 은 ?
R - Type, I-Type, J-Type
what is R-type ?
연산이 사용하는 모든 데이터 값이 레지스터에 있는 것
R type 에는 몇 개의 레지스터 operands 가 존재하는 가?
3개
R type 에 있는 3가지 operands 는 ?
rs, rt : source register
rd : destination register
R type 포맷을 구성하는 요소들은 ?
op : the operation code or opcode
funct : the function (어떤 연산인지)
shamt : the shift amount for shift instruction. shift 연산이 아닌 경우 0
레지스터 operands : rs,rt, rd
R type 포맷을 각 요소에 할당된 비트갯수와 함께 쓰시오
op(6) rs(5) rt(5) rd(5) shamt(5) funct(6)
what is I-type ?
즉치값 (immediates ; hard coded values) 과 레지스터의 값으로 연산하는 명령 타입
I-type 에서 operands 로 무엇이 사용되는가 ?
rs, rt : register operands
imm: immediate
즉치값으로 올수 있는 수의 범위는 ?
16비트의 2의 보수로 표현되므로 범위는 [-2^5, 2^5-1]
I type 포맷을 구성하는 요소들은 ?
op : opcode
rs,rt : register operands
imm : immediate
i type 포맷을 각 요소에 할당된 비트갯수와 함께 쓰시오
op (6) rs (5) rt (5) imm (16)
R-type 에서 op 값은 항상 무엇으로 정해지는가 ?
0
function ‘add’ 는 r type 필드 값으로 바꾸면 얼마인가?
32
function ‘sub’ 는 r type 필드 값으로 바꾸면 얼마인가?
34
add $s0, $s1, $s2
sub $t0, $t3, $t5
를 머신코드로 바꾸면 ?
(hexa 로 나타내시오)
0 17 18 16 0 32
0 11 13 8 0 34
- 맨 앞의 레지스터가 기계어에서는 맨 뒤로 감
000000 10001 10010 10000 00000 100000
-> 0x02328020
000000 01011 01101 01000 00000 100010
-> 0x016D4022
assembly 와 기계어에서 source operands 와 Destination operands 사이에 위치적인 차이가 있다. 어떻게 다른가 ?
어셈블리에서는 destination operands 가 먼저 source operands 가 나중에 나오지만 기계어에서는 source operands 먼저 destination operands 마지막에 나옴
i-type 의 대표적인 연산 3가지와 각각의 opcode 는 ?
addi (8), lw(35), sw(43)
I type 포맷을 구성하는 요소들은 ?
opcode ,
rs,rt,immediate
i type 포맷을 각 요소에 할당된 비트갯수와 함께 쓰시오
opcode (6) rs(5) rt(5) imm(16)
다음 assembly code 를 필드 value 로 변환 하시오
- addi $s, $s1, 5
- addi $t0, $s3, -12
8(addi) 17(rs;$s1) 16(rt;$s) 5(imm)
8(addi) 19(rs;$s3) 8(rt;$t0) -12 (imm)
- 뒤의 레지스터가 앞으로옴 !!
다음 assembly code 를 기계어 ( hexa) 로 변환하시오.
- addi $s0, $s1, 5
- addi $t0, $s3, -12
- field values 로 변환
- 8 17 16 5
- 8 19 8 -12 - 기계어로 변환 (비트 맞춰서)
- 001000 10001 10000 0000000000000101
=> 0x22300005
-001000 10011 01000 1111 1111 1111 0100
=> 0x2268fff4
다음 assembly code 를 필드 value 로 변환 하시오
- lw $t2, 32($0)
- sw $s1, 4($t1)
- 35(lw) 0(rs;$0) 10(rt;$t2) 32(imm)
- 43(sw) 9(rs;$t1) 17(rt;$s1) 4(imm)
- 뒤의 레지스터가 앞으로 옴 !!
다음 assembly code 를 기계어 ( hexa) 로 변환하시오.
- lw $t2, 32($0)
- sw $s1, 4($t1)
- 필드 value 로 변환
35 0 10 32
43 9 17 4 - 기계어 (이진법 ) 으로 변환 (형식 비트 맞춰서!!)
100011 00000 01010 0000 0000 0010 0000
-> 0x8C0A0020
101011 01001 10001 0000 0000 0000 0100
-> 0xAD310004
what is J-type ?
jump type. 지금까지의 프로그램의 흐름을 멈추고 다른 주소지로 점프하여 새로운 프로그램을 실행(혹은 앞의 코드들을 무시하고 새로운 부분부터 실행 ) 하는 기능을 하는 명령어 타입이다.
J type 포맷을 각 요소에 할당된 비트갯수와 함께 쓰시오
opcode(6), addr (26)
- addr 는 점프할 주소지 이다.
stored program 이란 ?
프로그램 명령어 또한 데이터가 모두 메모리에 저장되어지는 것이다.
von Neumann architecture 가 이 방법으로 설계되었다.
stored program 의 장점은 ?
새로운 프로그램을 가동하고 싶을 때, 하드웨어적인 rewiring 없이, 단순히 새로운 프로그램을 메모리에 올려서 실행시키면 되기 때문에 간단하다.
하나의 instruction 이 수행되는 과정을 3단계로 설명하면 ?
PC 에 저장된 주소값을 fetch
-> increment PC -> Execute
in mips, 프로그램이 통상적으로 시작되는 메모리 주소는 ?
0x00400000
0x016D4022 를 어셈블리어로 변환하시오
- 0000 0001 0110 1101 0100 0000 0010 0010
-> opcode (앞의 6비트) 가 000000 으로 0
따라서 R-type - R type 형식으로 나누어 보면
000000 01011 01101 01000 00000 0100010
각각, op rs rt rd shamt funt
function 은 34 이므로 sub rs = 11 , rt = 13, rd = 8, shmat=0
- 그러므로
sub $t0, $t3, $t5
기계어 -> 어셈블리어 변환 과정에서 한 명령어를 어떻게 parsing (조각조각) 할 지를 알려주는 요소는 ?
opcode
맨앞의 6비트
- R type 은 0 -> 6 5 5 5 5 6 으로 parsing
- I type 은 35,43,8 -> 6 5 5 16 으로 parsing
- J type 은 2, 3 -> 6 26 으로 parsing