cpu 안에는 모든 명령을 수행할 수 있는 길이 있고, 명령받은 길만 여는 방식으로 명령이 수행된다.
컴퓨터는 2진수를 사용하지만, 사람이 보기 편하기 위해서 10진수와 16진수를 사용한다.ex) (10진수) 10 = (2진수) 0000 0000 0000 0000 0000 0000 0000 1010 = (16진수) 0x0000000A
프로세서 내부에 있는 작고, 빠른, 임시의 메모리$0 ~ $31 까지 있음.하나에 2진수 31bit가 저장됨. (1word = 32bit)레지스터는 계산할 때 잠시 쓰는 임시 메모리 이므로, 레지스터 하나가 변수 하나에만 대응되지 않음.메모리 주소는 숫자로 되어있음.
C, C++, python, java와 같이 사람이 사용하는 언어이다.사람이 사용하기 쉽다.ex) a = b + c;고급언어를 compiler가 compile 하여 기계어에 가까워진 언어이다.코드를 텍스트로 표현한다.ex) add $3, $4, $5어셈블리어를 asse
= Control transfer instructions
산술 연산에는 +, -, *, / 등등이 있다. add vs addi
연산의 결과가 32-bit word로 표현될 수 없는 것. (연산 결과 부호가 반대로 나오거나, 값이 틀리게 나옴.)exception (예외) 이란?프로그램의 정상적인 수행을 을 방해하는 계획되지 않은 사건.exception이 발생하면정상적인 순서를 무시하고 kerne
1. nor : or을 한 후 not을 한 연산. 결과값은 not과 같다. 2. sll, srl
MIPS의 명령어는 32-bit 2진수로 되어 있다. R format은 32-bit를 op, rs, rt, rd, shamt, funct 총 6개의 field로 나눈다.MIPS의 R format 명령어는 op field와 function field로 명령어가 결정된다.
I format 명령어는 4개의 field를 가진다. 끝에 i가 붙는 명령어가 I format이다. ex) addi, ori, andi 등등마지막 16-bit가 immediate field이다. (범위 : -(2의 15승) ~ (2의 15승 - 1) )rt field
16-bit 로 표현할 수 없는 수를 썼을 때, "out of range" 에러가 난다.이를 해결하기 위해 lui 명령어를 사용한다.addi가 하는 일이 lui, ori가 하는 일과 같다. 따라서 addi로 에러가 나면 어셈블러가 lui와 ori로 assemble 한
변수 a, b, c는 메모리의 data segment에 존재.프로세서의 레지스터로 a($3), b($4), c($5)의 내용을 불러와서(Load) 연산.연산 후 $3의 내용을 a에 저장(store).\* I formatsource operand 값을 (base regi
메모리주소는 1byte 마다 있고, 1byte 안에는 16진수 두자리가 들어간다.1 word = 4 byte따라서 메모리주소가 4byte 마다 증가한다.어셈블리어의 Label = 고급언어의 변수명 (시작 메모리주소의 별명)형태는 Label 명 : 이다.data seg
\-> 프로그램의 control flow를 바꾸는 명령어이다. 반복문, 조건문 등에서 필요하다. \-> 어셈블리어에서 명령어 주소의 별명PC (program counter) : 레지스터로, 현재 실행 중인 명령어의 주소가 저장된다.메모리 주소가 4씩 증가하므