playXP

서브 메뉴

Page. 1 / 12522 [내 메뉴에 추가]
글쓰기
작성자 아이콘 개념의극한
작성일 2013-04-16 22:53:18 KST 조회 219
제목
와.... C가 엄청나게 좋은 언어였구나

MIPS 어셈블리 시바


#void Merge(int num[], int p, int q, int r){
		#  int temp[r-p+1];
		#  int i = p;
		#  int j = q+1;
		#  int k = 0;
		#  while(i<=q && j<=r){
		#      if(num <= num[j])   
		#          temp[k++] = num[i++];
		#      else    
		#          temp[k++] = num[j++];
		#   }
		#  while(i<=q){
		#     temp[k++] = num[i++];
		#    }
		# while(j<=r){
		#      temp[k++] = num[j++];
		#    }
		# for(i=p,j=0; i<=r; ++i, ++j) {
		#      num = temp[j];
		#    }
		#}
		#
		#

이걸 에셈블리로 다음으로 써야함

sub $sp, $sp, 16 sw $ra, 0($sp) sw $t0, 4($sp) sw $t2, 8($sp) sw $t4, 12($sp) move $s1, $t0 #i=p move $s2, $t4 #j=q addi $s2, $s2, 1 #j+=1 li $s3, 0 #k=0 #while(i<=q && j<=r) while1: bgt $s1, $t4, while2 #if(i>q) goto next while loop bgt $s2, $t2, while2 #and if(j>r) goto next while loop #if(num <= num[j]) # temp[k++] = num[i++] # $t6=$list ########access to num######################## la $t6, list add $t7, $s1, $zero add $t7, $t7, $t7 add $t7, $t7, $t7 #index*4 add $t8, $t7, $t6 # 0($t8) = num lw $t9, 0($t8) #t9 = num ########access to num[j]####################### addi $t7, $s2, 0 add $t7, $t7, $t7 add $t7, $t7, $t7 #index*4 add $t8, $t7, $t6 lw $s7, 0($t8) # s7=num[j] ble $t9, $s7, if j else ########access to temp[k]###################### la $s4, tmp add $s5, $s3, $zero add $s5, $s5, $s5 add $s5, $s5, $s5 add $s6, $s5, $s4 # 0($s6) = temp[k] ################################################# if: sw $t9, 0($s6) addi $s3, $s3, 1 #k++ addi $s1, $s1, 1 #i++ j while1 else: sw $s7, 0($s6) addi $s3, $s3, 1 #k++ addi $s2, $s2, 1 #j++ j while1 while2: bgt $s1, $t4, while3 #if(i>q) goto next while loop ######## t9=num ################### la $t6, list addi $t7, $s1, 0 add $t7, $t7, $t7 add $t7, $t7, $t7 #index*4 add $t8, $t7, $t6 # 0($t8) = num lw $t9, 0($t8) ########## s6=temp[k] ################### la $s4, tmp add $s5, $s3, $zero add $s5, $s5, $s5 add $s5, $s5, $s5 add $s6, $s5, $s4 # 0($s6) = temp[k] sw $t9, 0($s6) sw $t9, 0($s6) addi $s3, $s3, 1 #k++ addi $s1, $s1, 1 #i++ j while2 while3: bgt $s2, $t2, init_i_j ########access to num[j]####################### addi $t7, $s2, 0 add $t7, $t7, $t7 add $t7, $t7, $t7 #index*4 add $t8, $t7, $t6 lw $s7, 0($t8) # s7=num[j] ########## s6=temp[k] ################### la $s4, tmp add $s5, $s3, $zero add $s5, $s5, $s5 add $s5, $s5, $s5 add $s6, $s5, $s4 # 0($s6) = temp[k] sw $s7, 0($s6) j while3 init_i_j: move $s1, $t0 #i=p lw $s2, 0 #j=0 j for for: bgt $s1, $t2, return_merge ######## t9=num ################### la $t6, list addi $t7, $s1, 0 add $t7, $t7, $t7 add $t7, $t7, $t7 #index*4 add $t8, $t7, $t6 # 0($t8) = num lw $t9, 0($t8) # t9=num ########## s6=temp[k] ################### la $s4, tmp add $s5, $s2, $zero add $s5, $s5, $s5 add $s5, $s5, $s5 add $s6, $s5, $s4 # 0($s6) = temp[k] lw $s8, 0($s6) sw $s8, 0($t8) #num = temp[j] addi $s2, $s2, 1 addi $s1, $s1, 1 return_merge: lw $ra, 0($sp) lw $t0, 4($sp) lw $t2, 8($sp) lw $t4, 12($sp) addi $sp, $sp, 16 jr $ra

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
아이콘 개념의극한 (2013-04-16 22:55:03 KST)
0↑ ↓0
센스 이미지
가장 단편적인 예

a = b + c + d + e;

가 MIPS로는
main:
#syscall arith adder
add t1, d, e
add t2, c, t1
add a, b, t2
AngeLinaJoli (2013-04-16 22:55:21 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
전 자바가 더 좋은데
아이콘 개념의극한 (2013-04-16 23:02:16 KST)
0↑ ↓0
센스 이미지
뭐 뭘 쓰건 일단 어셈블리 보다는 좋....
아이콘 너는누구인가 (2013-04-16 23:31:54 KST)
0↑ ↓0
센스 이미지
어셈블리가 기계어에 좀더 가까운지라..
공부해라 (2013-04-17 00:01:26 KST)
0↑ ↓0
센스 이미지
뭥미
아이콘 Conviction.387 (2013-04-17 03:36:33 KST)
0↑ ↓0
센스 이미지
뭔소리여...
아이콘 Ruvin (2013-04-17 08:27:15 KST)
0↑ ↓0
센스 이미지
뭐레 Hello World
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.