From 003af77fe933e0d42e3638446bf285b6e8d14c9c Mon Sep 17 00:00:00 2001 From: Nicholas Pease Date: Fri, 15 Nov 2024 19:47:52 -0500 Subject: [PATCH] Final --- cos235-hw01-pease-nicholas-0001.tgz | Bin 0 -> 45 bytes cos235-hw04-pease-nicholas-0001.tgz | Bin 0 -> 1188 bytes cos235-hw04-pease-nicholas-0001/README | 17 ++++++++ hw1.s => cos235-hw04-pease-nicholas-0001/hw.s | 38 +++++++++++++----- hw.s | 14 +++++++ input | 4 +- 6 files changed, 60 insertions(+), 13 deletions(-) create mode 100644 cos235-hw01-pease-nicholas-0001.tgz create mode 100644 cos235-hw04-pease-nicholas-0001.tgz create mode 100644 cos235-hw04-pease-nicholas-0001/README rename hw1.s => cos235-hw04-pease-nicholas-0001/hw.s (77%) diff --git a/cos235-hw01-pease-nicholas-0001.tgz b/cos235-hw01-pease-nicholas-0001.tgz new file mode 100644 index 0000000000000000000000000000000000000000..872c01559ea7ac2302b7d73ae653f7ad29f8981d GIT binary patch literal 45 qcmb2|=3oE==C=nKd4a4$3%>j3@|iDyhyuw5bLLt1WYrlo7#IN4*9i&$ literal 0 HcmV?d00001 diff --git a/cos235-hw04-pease-nicholas-0001.tgz b/cos235-hw04-pease-nicholas-0001.tgz new file mode 100644 index 0000000000000000000000000000000000000000..b0082fb68ac7864f34dbafa770f56bcc0c2c5695 GIT binary patch literal 1188 zcmV;V1Y7$biwFP!000001MOFBZ`(Ey&S(9KLxTcI=NHMA?9EsQxQUBp%k02$()v@u z$c(K_7B!Nx{srNLQ12pKcjSn2yJRa|z$BWNIr|UIWTib2MlnC040)NFqBAT{s zJMDuP01C4EeNTNmeb26b=QwcOzT@?KUe9$7Y{zpw?*P1)P`(d|kc0yqMB4kO`S$Jq zOX2Uy|7zP3->O3;xYu)^%73@#cn|X5>mWPWFX7-m{Lk}$2q%+ERRQqp2iH1;ah83! zQ0^k3>%in>1|7TOTCD|{k%CcIL z-phftCP9=Q4g(?Ld@BcleJ}8+L=M-%+SWDa4HiXbSx{etqe3x2A7K;Ex+|Ykbr>BWx3#5zYc8)}RoKrYyz>igeDiOCv zz_i+mfVu?Q0m{t{2@@*dhTbwxfhSQB5fyw@VIf)wK1(7=IUL!?)rh&cA9Gb*LgLr5 zT43rr6x(W%O4ecggxZwnX*laiEZmklm3jUYZX&8E=txaU7QfN>6y8s!a6Xw_Sk@X#z=h0h)a6?mu*FMM7J10X0vHdL zL4J&}3tr>#8ZXwZPM2<6oz&x) z)6E=yfZgjy{4U*0!ZZQ7ubG2y;U3<=t{U@nXHfO}K|9E(^_Gyc*4jc&%v(eK2Ih?? z>pN*Qq-A9VK6tuMJ9h16J>94?ng781ziYhScUUV*s`IJWQoq%|N0#+L3CPGeM5tp*2u6TYdUr!|Wp zDiY|CFB#tf248Cr!v9{S85kHC7#J8B7#J8B7#J8B7#J8B7#J9QFMI(DYxf%fC;$L) Cu{|{a literal 0 HcmV?d00001 diff --git a/cos235-hw04-pease-nicholas-0001/README b/cos235-hw04-pease-nicholas-0001/README new file mode 100644 index 0000000..b7c5e3e --- /dev/null +++ b/cos235-hw04-pease-nicholas-0001/README @@ -0,0 +1,17 @@ +COS235 HW4 +Nicholas Pease +15 NOV 2024 + + +Description: + +This is a program that executes a recursive program to display some dots and ints on a screen. + +Execution: + +This program requires RARS (https://github.com/TheThirdOne/rars) and JDK. + +To execute the program with RARS, run the following command +java -jar rars1_6.jar hw.s + +With rars1_6 being the current version of RARS and in the same directory as the file \ No newline at end of file diff --git a/hw1.s b/cos235-hw04-pease-nicholas-0001/hw.s similarity index 77% rename from hw1.s rename to cos235-hw04-pease-nicholas-0001/hw.s index b6b6fc0..b68b29e 100644 --- a/hw1.s +++ b/cos235-hw04-pease-nicholas-0001/hw.s @@ -1,3 +1,4 @@ +# COS235- HW4 # Nicholas Pease # 31 OCT 2024 .data: @@ -7,22 +8,34 @@ .text: main: li a7, 5 # input unsigned int (A) + la a0, inputUInt ecall mv a1, a0 # a1 = A li a7, 5 # input unsigned int (B) + la a0, inputUInt ecall - mv a2, a0 # a2 = B + mv a2, a0 + # a2 = B # CALL RECURSIVE FUNCTION - jal ra, kapow + jal kapow + jal kapow # PRINT RETURN VALUE - mv a0, a0 + li a7, 34 + ecall + + mv t0, a0 + li a0, 9 + li a7, 11 + ecall + mv a0, t0 + li a7, 1 ecall - jal ra, newline + jal newline li a7, 10 ecall # Exit program @@ -52,33 +65,36 @@ kapow: bne t0,a2,kapow_forLoop # END FOR LOOP + li a0, 32 + li a7, 11 + ecall + li a7, 1 # print int mv a0, a2 # print Y ecall - jal ra, newline # print newline + jal newline # print newline - li t0, 1 - blt t0, a2, kapow_gt1 # if Y > 1, jump + li a0, 1 + blt a0, a2, kapow_gt1 # if Y > 1, jump blt zero, a2, kapow_gt0 # if Y > 0, jump # others y < 0 - li a0, 1 j kapow_return kapow_gt0: - mv a0, a1 + mv a0, a1 # return X j kapow_return kapow_gt1: li t0, 2 div a2,a2,t0 # Y = Y / 2 - jal ra, kapow # recursive call + jal kapow # recursive call mv a3, a0 # a3 = first return value lw t1, 0(sp) # load original Y (t1) li t0, 2 # remainder number (t0) rem t0,t1,t0 # t0 = Y (t1) % 2 (t0) add a2, t0, a2# Y = prevY + y%2 - jal ra, kapow + jal kapow mul a0, a3, a0 # return = x * y kapow_return: diff --git a/hw.s b/hw.s index 5ad4b3a..b68b29e 100644 --- a/hw.s +++ b/hw.s @@ -20,8 +20,18 @@ main: # CALL RECURSIVE FUNCTION jal kapow + jal kapow # PRINT RETURN VALUE + li a7, 34 + ecall + + mv t0, a0 + li a0, 9 + li a7, 11 + ecall + mv a0, t0 + li a7, 1 ecall @@ -55,6 +65,10 @@ kapow: bne t0,a2,kapow_forLoop # END FOR LOOP + li a0, 32 + li a7, 11 + ecall + li a7, 1 # print int mv a0, a2 # print Y ecall diff --git a/input b/input index 451c1a5..35658e7 100644 --- a/input +++ b/input @@ -1,2 +1,2 @@ -2 -2 \ No newline at end of file +15 +15 \ No newline at end of file