컴구
컴구
Arithmetic Instructions mult rs, rt (signed 숫자로 보고 곱셈) / multu rs, rt (rs, rt 둘 다 양수라 보고 곱셈) >- 2 sources overflow 체크 x 32bit끼리의 곱셈이기 때문에 64bit의 결과를 저장하기 위해 2개의 32bit 레지스터를 사용한다. HI: most-significant...
Bitwise Logical Instructions Exercise > nor $t7, $t1, $t1 = ~$t1 > sll $t2, $s0, 4 > $s0을 4bit 왼쪽으로 이동시킨다. > 왼쪽으로 x bit 이동하는 것은 2^x 로 곱하는 것과 같은 결과가 나오지만, 속도가 훨씬 빠르다. srl $t4, $t2, 2 > $t2를 2bit 오...
R-format Instructions 기계어로 표현할 때는 어셈블러와 달리 destination이 나중에 온다. > add rd, rs, rt R-format 으로 변환하면 다음과 같다. > Disassemble (기계어 -> 어셈블러) 0x00853022를 disassemble 하시오. 1. 2진수로 변환 -> 0000 0000 1000 0101 ...
I-format Instructions 상수를 표현하기 더 좋다. 나머지 16bit는 몽땅 immediate field이다. > immediate field는 16bit이기 때문에 표현할 수 있는 숫자는 -32768 ~ +32768 까지이다. ori / andi (sign extension x) >ori $11(01011), $9(01001), 0x8...
I-format Instructions > ori $s0, $0, 0x007d0900 $s0의 값을 0000 0000 0111 1101 0000 1001 0000 0000 (=0x007D0900) 로 만들고 싶을 때 이 경우, 0x007d0900이 16bit로는 표현이 안되고, 32bit로는 표현된다. ori를 32bit로 표현하기 위해서는 I-for...
유사 명령어 (Pseudoinstruction) 기계어 명령어는 아닌데 assembly 명령어만 있는 명령어 프로그래머의 편의를 위해 존재한다. li $10, 1 보통 ori $10, $0, 1 를 사용해서 $10번 레지스터에 1을 저장하는데, 이 의도를 파악하고 따로 만든 instruction이 li instruction이다. > assembler가...
Data Transfer Instructions sw $4, 8($5) > 메모리에 저장 $4: source 8($5): base register -> destination (메모리 어디에 저장해야할까) base register를 어떻게 해석해야할까? 메모리를 계산하는 수식: R[$5] + 8 -> 5번 레지스터가 가지고 있는 32bit 값에 offset...
Byte order 4개의 byte를 모아 word를 만들 때 2가지 방향이 가능하다. > - Big endian Little endian 위에서부터 아래로 모아도 되고, 아래서부터 위로 모아도 된다. > > Little endian 아래에서 위로 모으게 되면, little 주소에 있는 것이 끝(오른쪽)으로 간다. >
Word Alignment 메모리 주소가 4의 배수에서만 시작한다. > la $5, a 주소값을 확인할 수 있다. > - load address a: label 이름 (주소에 대한 별명) > la $5, a 했을 때, 어셈블러는 a의 주소값을 이미 아니까 lui 명령어로 알아서 변환해준다. a의 주소값인 4097을 $5번 레지스터에 저장하는 lui 명...