컴퓨터구조(assembly) 어셈블리 코드 및 코드 실행중 단계별 레지스터, 메모리 변화 과정 기록(pcspim 사용)
페이지 정보
작성일 23-02-06 16:42
본문
Download : (assembly).zip
설명
else
if( i==0 )
void array_copy ( int x, int y)
lw$t1, 12($sp)
컴퓨터구조(assembly) 어셈블리 코드 및 코드 실행중 단계별 레지스터, 메모리 변화 과정 기록(pcspim 사용)
addi$s0, $zero, 1
1. 명령어를 단계별로 수행하면서 $sp, $a0, $a1, $a2, $a3, $s0, $s1, $t0, $t1, $t2, $v0, $ra, 스택메모리의 변화과정을 표로 작성(data segment(메모리영역)에서 관찰) main : addi$s0, $zero, 1 addi$t0, $zero, 2 addi$t1, $zero, 3 addi$a0, $zero, 4 addi$a1, $zero, 5 addi$a2, $zero, 6 addi$a3, $zero, 7 jalleaf add$t2, $s0, $t0 add$t2, $t2, $t1 add$s1, $t2, $v0 li$v0, 10 syscall leaf : addi$sp, $sp, -16 sw$t1, 12($sp) sw$t0, 8($sp) sw$s0, 4($sp) sw$ra, 0($sp) add$t0, $a0, $a1 add$t1, $a2, $a3 sub$s0, $t0, $t1 add$v0, $s0, $zero lw$ra, 0($sp) lw$s0, 4($sp) lw$t0, 8($sp) lw$t1, 12($sp) addi$sp, $sp, 16 jr$ra 2. 아래 어셈블리 코드를 작성하고 array x[]에 5개의 초기값을 넣어 실행, 명령어를 한단계씩 수행하면서 모든 레지스터의 변화과정을 표로 작성 void array_copy ( int x[], int y[]) { int i; i =0; while ((x[i] != 0) { if( i==0 ) y[i] = x[i]; else y[i] = y[i-1] +x[i]; i +=1; } 3. 임의의 수 n을 $a0로 받아 n 번째 피보나치 수를 $v0로 출력하
while ((x[i] != 0) {
sub$s0, $t0, $t1
sw$ra, 0($sp)
레포트 > 공학,기술계열
addi$a1, $zero, 5
sw$t0, 8($sp)
Download : (assembly).zip( 55 )
main :
add$t2, $t2, $t1
syscall
addi$t0, $zero, 2
lw$t0, 8($sp)
-3154_01.jpg)
-3154_02_.jpg)
-3154_03_.jpg)
-3154_04_.jpg)
-3154_05_.jpg)
addi$a2, $zero, 6
addi$a0, $zero, 4
addi$t1, $zero, 3
lw$s0, 4($sp)
add$s1, $t2, $v0
addi$sp, $sp, -16
i +=1;
i =0;
y[i] = x[i];
add$v0, $s0, $zero
sw$t1, 12($sp)
jr$ra
sw$s0, 4($sp)
y[i] = y[i-1] +x[i];
}
add$t2, $s0, $t0
leaf :
lw$ra, 0($sp)
{ int i;
jalleaf
add$t0, $a0, $a1
addi$sp, $sp, 16
add$t1, $a2, $a3
li$v0, 10
3. 임의의 수 n을 $a0로 받아 n 번째 피보나치 수를 $v0로 출력하
addi$a3, $zero, 7
2. 아래 어셈블리 코드를 작성하고 array x에 5개의 초기값을 넣어 실행, 명령어를 한단계씩 수행하면서 모든 레지스터의 변화과정을 표로 작성
1. 명령어를 단계별로 수행하면서 $sp, $a0, $a1, $a2, $a3, $s0, $s1, $t0, $t1, $t2, $v0, $ra, 스택메모리의 변화과정을 표로 작성(data segment(메모리영역)에서 observation)
컴퓨터구조, assembly, 어셈블리, 코딩, 피보나치, 레지스터, 스택, pcspim
순서
다.