• API
• FAQ
• Tools
• Archive
SHARE
TWEET # part 2 a guest Dec 9th, 2018 52 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. transform:
2. ############################### Part 2: your code begins here ##
3.
4.
5.
6. #T1 COUNTS X(inner) T0 COUNTS Y(row)
7.
8. li \$t0, 0 #counter that will exit out of row loop (y)
9.
10. countYLoop:
11. beq \$t0, \$a3, exitYLoop #potential for error, exit entire loop if the final element is reached
12. li  \$t1, 0   #resets the x counter once dim(end of array row) is reached
13.
14. countXLoop:
15. beq \$t1, \$a3, exitXLoop #branches once the end of the end of the array row is reached
16.
17. #calc x0
18. lbu \$t2, 0(\$a2)   #Gives M00 of transformation matrix ASSUMING INT IS 4 BYTES
19. mul \$t2, \$t2, \$t1
20.
21. lbu \$t3, 4(\$a2)  #gives M01 of transformation matrix   ASSUMING INT IS 4 BYTES
22. mul \$t3, \$t3, \$t0
23.
25. lbu \$t3, 8(\$a2) #M02 assuming 4 bytes per element
26.
27. add \$t2, \$t3, \$t2  # X0 IS STORED HERE
28.
29.
30. #calc y0
31. lbu \$t3, 12(\$a2)
32. mul \$t3, \$t3, \$t1
33.
34. lbu \$t4, 16(\$a2)
35. mul \$t4, \$t4, \$t0
36.
38.
39. lbu \$t5, 20(\$a2)
40.
41. add \$t3, \$t5, \$t3   # y0 IS STORED HERE
42.
43.
44.
45.
46. #check bounds
47. bge \$t2, \$a3, outOfBounds
48. blt \$t2, \$zero, outOfBounds
49. bge \$t3, \$a3, outOfBounds
50. blt \$t3, \$zero, outOfBounds
51.
52. #if youre in this code block, youre in bounds
53. mul \$t4, \$t3, \$a3  #y0 * dim
54. add \$t4, \$t4, \$t2  # OFFSET OF x0 y0 IS STORED IN T4
55.
56. add \$a0, \$a0, \$t4   #SHIFTS THE ADDRESS TO THE OFFSET CALCULATED IN THE ABOVE STEP
57. lbu \$t5, 0(\$a0)      #HOLDS DATA OF INPUT ARRAY OFSETTED BY T4 in T5
58. #sub \$a0, \$a0, \$t4    #RESET ADDRESS A0 TO POINT TO THE BEGINNING OF THE ARRAY
59.
60. mul \$t4, \$t0, \$a3   #CALCULATE OFFSET FOR THE OUTPUT MATRIX AND STORE IN T4
62. add \$a1, \$a1, \$t4   #OFFSETS OUTPUT MATRIX TO X AND Y
63. sb \$t5, 0(\$a1)       #STORES CONTENTS OF input(x0,y0) TO T5
64. #sub \$a1, \$a1, \$t4   #Reset address A1 to point to the beginning of the output array
65.
66.
67. addi \$t1, \$t1, 1 #update col(x) counter
68. j countXLoop
69.
70. exitXLoop:
71.
72. addi \$t0, \$t0, 1 #INCRE X COUNTER
73.
74. j countYLoop
75.
76. exitYLoop:
77.
78.
79. #out of bounds condition: store 0 in offsetted index
80. outOfBounds:
81. #calculate offset for X and Y COUNTERS
82. mul \$t4, \$t0, \$a3