Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # PRACTICA 3 #######################
- ## 3.1 ##
- .data
- mat1: .space 5*6*4 # NF*NC*NB (int = 4 bytes)
- mat2: .space 3*5 # NB = 1 (char = 1 byte)
- .align
- mat3: .space 2*2*8 # NB = 8 (long long = 8 bytes)
- mat4: .word 2,3,1,2,4,3
- ## 3.2 ##
- # @mat[i][j] = @mat + (i*NC + j) * NB
- @mat1[4][3] = @mat1 + (4*6 + 3)*4
- @mat2[2][4] = @mat2 + 2*5 + 4
- @mat3[1][0] = @mat3 + 1*2*8
- @mat4[0][2] = @mat4 + 2*4
- ## s3b.s | 3.4 - 3.5 ##
- .data
- mat1: .space 120 # 120 = 5*6*4
- mat4: .word 2,3,1,2,4,3
- col: .word 2
- .text
- .globl main
- main: addiu $sp, $sp, -16 # Guardem adreça retorn
- sw $ra, 0($sp)
- sw $s0, 4($sp)
- sw $s1, 8($sp)
- sw $s2, 12($sp)
- la $s0, mat1+108 # 108 = (4*6 + 3) *4
- # $s0 = &mat1[4][3]
- la $s1, mat4 # $s1 = &mat4[0][0]
- addiu $s2, $s1, 8 # 8 = 2*4
- # $s2 = mat4[0][2]
- move $a0, $s1
- move $a1, $s2
- la $a2, col
- lw $a1, 0($a1)
- lw $a2, 0($a2)
- jal subr # Crida subr 1
- sw $v0, 0($s0) # mat1[4][3] = subr(mat4, mat4[0][2], col)
- la $s0, mat1 # $t0 = &mat1[0][0]
- addiu $a1, $zero, 1
- addiu $a2, $zero, 1
- jal subr # Crida subr 2
- sw $v0, 0($s0) # mat1[0][0] = subr(mat4, 1, 1)
- lw $ra, 0($sp) # Carreguem adreça retorn
- lw $s0, 4($sp)
- lw $s1, 8($sp)
- lw $s2, 12($sp)
- addiu $sp, $sp, 16
- jr $ra
- subr: addiu $sp, $sp, -16 # Copia seguretat paràmetres
- sw $a0, 0($sp)
- sw $a1, 4($sp)
- sw $a2, 8($sp)
- sw $ra, 12($sp)
- la $t0, mat1 + 20 # $t0 = @mat1[0][5]
- li $t1, 24 # 6*4
- mult $t1, $a2 # col*24
- mflo $t1
- addu $t0, $t0, $t1 # $t0 = @mat1[j][5]
- move $t2, $a0
- li $t1, 3
- mult $a1, $t1
- mflo $t1 # i*3
- addu $t1, $t1, $a2 # i*3 + j
- sll $t1, $t1, 2 # *4
- addu $t2, $t2, $t1 # $t2 = @x[i][j]
- lw $t1, 0($t2)
- sw $t1, 0($t0) # @mat1[j][5] = x[i][j];
- move $v0, $a1
- lw $a0, 0($sp)
- lw $a1, 4($sp)
- lw $a2, 8($sp)
- lw $ra, 12($sp)
- addiu $sp, $sp, 16
- jr $ra
- ## 3.5 ##
- @mat[i][2] = mat + (i*6 + 2)*4 = mat + i*24 + 8
- stride = @mat[i+1][2] - @mat[i][2] = [mat + ((i+1)*6 + 2)*4] - (mat + i*24 + 8)
- mat + (i+1)*24 + 8 - mat - i*24 - 8
- mat - mat + i*24 - i*24 + 24 + 8 - 8
- stride = 24bytes
- ## s3c.s | 3.6 ##
- .data
- mat: .word 0,0,2,0,0,0
- .word 0,0,4,0,0,0
- .word 0,0,6,0,0,0
- .word 0,0,8,0,0,0
- result: .space 4
- .text
- .globl main
- main: addiu $sp, $sp, -8
- sw $ra, 0($sp)
- sw $s0, 4($sp)
- la $s0, result
- la $a0, mat
- jal suma_col
- sw $v0, 0($s0) # result = suma_col(mat);
- lw $ra, 0($sp) # carreguem adreça retorn
- lw $s0, 4($sp)
- addiu $sp, $sp, 8
- jr $ra
- suma_col:
- addiu $sp, $sp, -4
- sw $a0, 0($sp)
- move $t0, $zero # i = 0
- move $t1, $zero # suma = 0
- addiu $t2, $a0, 8 # $t1 = & mat+ 2*4 Inicialitzar punter
- li $t3, 4
- for: lw $t4, 0($t2) # $t1 = mat[x][y]
- addu $t1, $t1, $t4
- addiu $t2, $t2, 24 # 24 = 6*4
- addiu $t0, $t0, 1
- blt $t0, $t3, for
- move $v0, $t1
- lw $a0, 0($sp)
- addiu $sp, $sp, 4
- jr $ra
- ## JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement