오래 못 할 짓 하지 않기
[ 컴퓨터 구조 ] 문제 풀기 본문
1
a) add R3, R2, R1 이 명령어를 수행한 이후에 각 레지스터에 어떤 값이 있는가?
→ R3에 R2+R1값을 넣는 것이다. 즉, R3외에는 변하는 값이 없음.
R1 = 12 , R2 = 16 , R3 = 12+16 = 26
b) load R3 , 12(R1) 이 명령어 수행 후에 R1과 R3 레지스터에는 어떤 값이 있는가?
→ R3 에 ( R1의 값 + 12 ) 주소에 있는 값을 넣어주는 것이므로 R3만 변한다.
R1 = 12 , 12 +12 = 24 , 메모리에서 24 주소에 있는 값은 28.
c) addi R2 , R3 , #16 이 명령어 수행 후에 레지스터에는 어떤 값이 있겠는가?
→ R2 에 , R3의 값 +16을 넣는 것이다.
R2 = R3 +16 = 20 +16 = 36
Stored program
: 컴퓨터에는 프로세서와 메모리가 있고, 메모리에는 Instruction과 Data가 이진수 형태로 저장되어있다.
그 메모리에 저장되어 있는 Instruction을 프로세서에서 fetch하여 가져온 뒤 해석하여 실행하는 것을 Stored program이라고 한다.
(폰노이만이 개발함)
1) Instruction 을 fetch하는데 몇 번 메모리에 접근했는가?
Instruction은 4개이므로 4번.
2) 데이터를 read/write하기위해 메모리에 접근한 횟수는?
데이터를 Load(read)하는 lw 1번
데이터를 Store(write)하는 sw 1번
lw $t0, 16($s7) // $t0=B[4]
addi $t0,$t0,1 // $t0=B[4]+1
sll $t0, $t0 , 2 // $t0= (B[4]+1)*4 → A에 넣으려면 B[4]+1이 만약 6이면, word단위로 array를 index해야하기 때문에
6*4 를 해주어야 A[6]으로 갈 수 있다.
add $t0, $t0, $s6 // // $t1=&A[B[4]+1]
lw $t1, 0($t0) // $t1=A[B[4]+1]
add $s0 , $s1 , $t1
num = num / n1
t3 = num%n1
if( num%n1 ==0 ){
num = num /n2
t3 = num%n2
if( num%n2 ==0 ){
res = 1
done();
else{
res = 0
}
done();
(출처)
한동대학교 용환기교수님 - 컴퓨터구조
'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글
[ 컴퓨터 구조 ] 11. DIVISION (0) | 2023.10.08 |
---|---|
[ 컴퓨터 구조 ] 10. Multiplication (0) | 2023.10.08 |
[ 컴퓨터 구조 ] 9. Overflow (Data path) (0) | 2023.10.03 |
[ 컴퓨터 구조 ] 8. Procedure (0) | 2023.10.02 |
[ 컴퓨터 구조 ] 7. MIPS Addressing Mode (0) | 2023.09.30 |