목록2학년 2학기/컴퓨터 구조 (47)
오래 못 할 짓 하지 않기
Overflow 1) Addition , Subtraction 여기에서는 Overflow 참고하기 ● Overflow 가 생기는 경우 - 합 : 두 개의 positive num 이나 두 개의 negative num 을 더할 때 ex) sign (부호를 나타내는 가장 앞 비트) 가 positve num 을 합했는데 1이 되거나, 그 반대일 때 - 차 : 서로 다른 두 개의 부호의 숫자를 뺄 때 처리하는 법 : - 무시 (C) : addu (add unsigned) , addiu,subu - 에러 알려주기 (Ada, fortran) (Exercise) 더보기 C in != C out 일 때 overflow가 발생했다고 말할 수 있다. C in 과 C out이 없이 판별하는 법은 S로 보는 것이다. 같은 부호..
Procedure : Fucntion이라고 생각하면 됨. ● Procedure call step 1. 함수를 접근할 수 있는 곳에 파라미터를 넣어준다. 2. 함수로 이동( Transfer control ) 3. 함수에 필요한 정보들을 메모리에서 가져온다. 4. 함수에 있는 동작 실행 5. 접근(함수 call)한 부분에 값을 놓는다. 6. 원래 흐름대로 다시 진행 ● Procedure call 에 사용되는 Register - $a0 ~ $a3 : Arguments 전달하는데 사용되는 레지스터 4개 - $v0 ~ $v1 : 결과값 return하는데 사용되는 레지스터 2개 - $ra : 원래 PC주소로 돌아가기 위해 주소를 저장하는 레지스터 1개 ( 살작 르블랑 w 느낌임 ) ● Procedure call 에..
도입 : 우리는 여태 32비트를 사용해왔다. 그 중에서 우리가 주소를 위해서는 할당된 개수만큼의 비트만 사용할 수 있었음. 만약에 할당된 거 이상으로 더 표현해야한다면 어떻게 표현할 수 있나?? ==> MIPS 스는 LUI 라는 Instruction을 사용한다. LUI $t0,255 ( Load Upper Immediately ) 라고 하면, 32비트가 있는 t0 Register의 Upper, Lower가 있는데 그 중 Upper에 255를 넣고, Lower는 모두 0으로 채운다. 문제 ) MIPS 코드에 32비트에 0x0003D 0900 이 Hexa number를 s0 register에 넣으려면?? --> 1) 우선 앞에 있는 0x는 뗀다 , 2) 저 Hexa decimal 8개 =32비트이므로, 00..
Format 예전에 컴퓨터가 Completeness를 가져야한다 이런 내용을 배우면서 성능을 향상시키고 발전시키기 위해서는 규칙이 있어야한다고 했다. 그 규칙에서 우리는 간단하게 그저 Operand가 몇 개인지만 배웠고, 이제 우리는 각 Instrcution을 타입에 따라 나누어서 뜯어보려고 한다. 1) R - Type 역할 : arithmetic and logic instructions ( 숫자 연산과 논리 연산자) 구성: 특징 : R-type inst는 Op코드가 항상 0이고, Function 코드는 항상 32이다. 앞은 항상 0 , Function code는 32, Shamt도 항상 0, 따라서 안에 주소만 잘 넣어주면 된다. 2) I - Type 역할 : 메모리에서 데이터를 가져오거나 저장한다. ..
Control Instruction 에서는 3가지 종류가 있다 Beq / Bne $t0 , $t1 , 16bit Offset --> 두 개가 같냐 or 다르냐에 따라 Offset * 4 한 값을 PC 값에 더한다. ' PC = PC + Offset*4 ' (*4인 이유 = 1word = 4byte) [ PC 주소의 증가값을 16비트로 표시한다. (상대적으로) 가까운 주소로 간다. ] J / Jal 26-bit address 점프 or 점프 label(lable?) 인데, J 'Hello 라고 하면, Hello라는 label로 PC값을 옮긴다'고 생각하면 된다. BEQ같은 경우에는 같으면 label 로 가는데, 이건 그냥 시키면 간다. [ PC 주소값은 26 bit까지 표시 가능 ] JR JR $r1 같이..
프로그램을 열고 파일을 로드하면 레지스터의 값이 바뀐 것들은 빨간색으로 저렇게 변한다. 실행시키면 콘솔창에 결과가 출력됨. 원하는 부분에서 마우스 오른쪽 클릭하면 break 포인트 걸 수 있음 break 포인트 이후에 한 칸씩 진행시키는 거 가능
보호되어 있는 글입니다.
MIPS 의 목적 1) Performance를 최대화 2) 비용 최소화 3) design 시간 줄이기 Register 관련해서 4가지 종류가 있다. 1) 일반적인 목적 : 주소나 값들 갖고 있는 목적 , 주로 Int관련 register 32 * 32 bits 레지스터 : 32개의 레지스터, 각각 32비트를 갖고 있다. + 0번(첫 번째) 레지스터는 항상 0을 가지고 있다! 2) 소수 관련 목적 : 소수점 아래를 32비트씩 나눠 가져가서 계산함 3) HI(32bits) LO(32bits) : 나누기와 곱하기 관련 연산 32비트 * 32비트 곱하기를 하면, 자리수가 넘칠 수가 있다. 높은 쪽 32비트는 HI가 커버하고, 그 아래는 LO가 커버한다. 나누기에서는 HI에는 몫, LO에는 나머지를 넣는다. 4) ..
Instruction은 Completeness 가 있어야 한다. : 뭐 하나 빼먹으면 작동 안 하고, 다 complete 해야 원하는대로 작동한다 이말 아래 3개 중에 하나라도 없으면 Complete 하다고 할 수 X Instruction은 아래 3가지를 다루어야 한다. ● Arithmetic / Logical ▶ 연산을 한다거나 ex) 데이터 값을 수정 및 연산 + - * / ● Data Transfer ( including I/O ) ▶ 데이터를 가공한다거나 ex) 데이터를 한 곳에서 다른 곳으로 복사 ● Control Transfer ▶ Branch나 조건부 조절을 해야한다! ex) Jump (조건부X) or Branch (조건부) 그럼 아래에서 각각 더 자세히 알아보자 Arithmetic / Lo..
Addressing mode : operand 가 있는 메모리/레지스터를 나타내는 방법 모음 포인터를 사용하여 데이터를 나타내는 것이기 때문에 융통성 면에서 좋다고 함. Effective Address (E.A.) = 계산할 Operand를 포함한 주소 = 결과적으로 사용할 데이터가 있는 주소 AC : 명령어를 실행했을 때 얻게되는 데이터 값 EA : AC가 있는 주소 t1 레지스터에 , s1레지스터의 값 + 1000을 한 주소에 있는 값을 넣어라 Address 모드 * direct ( 주소를 갖고있음. ) * indirect ( 주소를 가리키고 있는 애의 주소를 갖고있음) 1.Implied addressing mode : 특별한 주소가 존재하지 않음 정확한 주소에 넣는다기보단 AC에다 다 떄려박는 느낌..