From 82297aa8026f60ded54b8e3c7d3c6bcc5ce2e26c Mon Sep 17 00:00:00 2001 From: TiagoRG Date: Fri, 1 Mar 2024 10:30:45 +0000 Subject: [PATCH] [AC2] Aula02 - Missing additional exercises Signed-off-by: TiagoRG --- 2ano/2semestre/ac2/aula02/AC2-P-Aula02.pdf | Bin 0 -> 44335 bytes 2ano/2semestre/ac2/aula02/part1-ex1.c | 13 ++++ 2ano/2semestre/ac2/aula02/part1-ex1.s | 37 ++++++++++ 2ano/2semestre/ac2/aula02/part1-ex2.c | 16 +++++ 2ano/2semestre/ac2/aula02/part1-ex2.s | 39 ++++++++++ 2ano/2semestre/ac2/aula02/part2.c | 38 ++++++++++ 2ano/2semestre/ac2/aula02/part2.s | 80 +++++++++++++++++++++ 7 files changed, 223 insertions(+) create mode 100644 2ano/2semestre/ac2/aula02/AC2-P-Aula02.pdf create mode 100644 2ano/2semestre/ac2/aula02/part1-ex1.c create mode 100644 2ano/2semestre/ac2/aula02/part1-ex1.s create mode 100644 2ano/2semestre/ac2/aula02/part1-ex2.c create mode 100644 2ano/2semestre/ac2/aula02/part1-ex2.s create mode 100644 2ano/2semestre/ac2/aula02/part2.c create mode 100644 2ano/2semestre/ac2/aula02/part2.s diff --git a/2ano/2semestre/ac2/aula02/AC2-P-Aula02.pdf b/2ano/2semestre/ac2/aula02/AC2-P-Aula02.pdf new file mode 100644 index 0000000000000000000000000000000000000000..67fab1ebec1d0a044aa556bf74455e994ecee2f5 GIT binary patch literal 44335 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 KEMdFaYy2Cs9gutg literal 0 HcmV?d00001 diff --git a/2ano/2semestre/ac2/aula02/part1-ex1.c b/2ano/2semestre/ac2/aula02/part1-ex1.c new file mode 100644 index 0000000..527b553 --- /dev/null +++ b/2ano/2semestre/ac2/aula02/part1-ex1.c @@ -0,0 +1,13 @@ +#include + +int main() { + int counter = 0; + while (1) { + putChar('\r'); + printInt(counter, 10 | 4 << 16); + resetCoreTimer(); + while (readCoreTimer() < 200000); + counter++; + } + return 0; +} diff --git a/2ano/2semestre/ac2/aula02/part1-ex1.s b/2ano/2semestre/ac2/aula02/part1-ex1.s new file mode 100644 index 0000000..15c3902 --- /dev/null +++ b/2ano/2semestre/ac2/aula02/part1-ex1.s @@ -0,0 +1,37 @@ + .equ READ_CORE_TIMER, 11 + .equ RESET_CORE_TIMER, 12 + .equ PUT_CHAR, 3 + .equ PRINT_INT, 6 + + .data + .text + .globl main + +main: li $t0, 0 + +while: li $a0, '\r' + li $v0, PUT_CHAR + syscall + + move $a0, $t0 + li $a1, 4 + sll $a1, $a1, 16 + ori $a1, $a1, 10 + li $v0, PRINT_INT + syscall + + li $v0, RESET_CORE_TIMER + syscall + +delay: li $v0, READ_CORE_TIMER + syscall + move $t1, $v0 + + # 20,000,000 cycles = 1 second = 1 Hz + # 4,000,000 cycles = 0.2 second = 5 Hz + # 2,000,000 cycles = 0.1 second = 10 Hz + blt $t1, 20000000, delay + + addi $t0, $t0, 1 + j while + diff --git a/2ano/2semestre/ac2/aula02/part1-ex2.c b/2ano/2semestre/ac2/aula02/part1-ex2.c new file mode 100644 index 0000000..d601326 --- /dev/null +++ b/2ano/2semestre/ac2/aula02/part1-ex2.c @@ -0,0 +1,16 @@ +#include + +void delay(unsigned int ms) { + resetCoreTimer(); + while(readCoreTimer() < ms * 20000); +} + +int main() { + int counter = 0; + while (1) { + putChar('\r'); + printInt(counter++, 10 | 4 << 16); + delay(1000); + } + return 0; +} diff --git a/2ano/2semestre/ac2/aula02/part1-ex2.s b/2ano/2semestre/ac2/aula02/part1-ex2.s new file mode 100644 index 0000000..cea5209 --- /dev/null +++ b/2ano/2semestre/ac2/aula02/part1-ex2.s @@ -0,0 +1,39 @@ + .equ READ_CORE_TIMER, 11 + .equ RESET_CORE_TIMER, 12 + .equ PUT_CHAR, 3 + .equ PRINT_INT, 6 + + .data + .text + .globl main + +main: li $s0, 0 + +while: li $a0, '\r' + li $v0, PUT_CHAR + syscall + + move $a0, $s0 + li $a1, 4 + sll $a1, $a1, 16 + ori $a1, $a1, 10 + li $v0, PRINT_INT + syscall + + addu $sp, $sp, -4 + sw $ra, 0($sp) + li $a0, 1000 + jal delay + + addi $s0, $s0, 1 + j while + +delay: li $v0, RESET_CORE_TIMER + syscall + +count: li $v0, READ_CORE_TIMER + syscall + mul $t0, $a0, 20000 + blt $v0, $t0, count + + jr $ra diff --git a/2ano/2semestre/ac2/aula02/part2.c b/2ano/2semestre/ac2/aula02/part2.c new file mode 100644 index 0000000..78dc9e5 --- /dev/null +++ b/2ano/2semestre/ac2/aula02/part2.c @@ -0,0 +1,38 @@ +#include + +void delay(unsigned int ms) { + resetCoreTimer(); + while(readCoreTimer() < ms * 20000); +} + +int main() { + int cnt1 = 0, cnt5 = 0, cnt10 = 0; + unsigned int ms = 100; + while (1) { + putChar('\r'); + printInt(cnt1, 10 | 4 << 16); + putChar('\t'); + printInt(cnt5, 10 | 4 << 16); + putChar('\t'); + printInt(cnt10, 10 | 4 << 16); + + char key = inkey(); + switch(key) { + case 'S': + while(inkey() != 'R'); + break; + case 'A': + ms /= 2; + break; + case 'N': + ms = 100; + break; + } + + delay(ms); + if (cnt10 % 10 == 0) cnt1++; + if (cnt10 % 2 == 0) cnt5++; + cnt10++; + } + return 0; +} diff --git a/2ano/2semestre/ac2/aula02/part2.s b/2ano/2semestre/ac2/aula02/part2.s new file mode 100644 index 0000000..65c2516 --- /dev/null +++ b/2ano/2semestre/ac2/aula02/part2.s @@ -0,0 +1,80 @@ + .equ READ_CORE_TIMER, 11 + .equ RESET_CORE_TIMER, 12 + .equ PUT_CHAR, 3 + .equ PRINT_INT, 6 + + .data + .text + .globl main + +# Mapa de registos +# cnt1: $s0 +# cnt5: $s1 +# cnt10: $s2 + +main: li $s0, 0 + li $s1, 0 + li $s2, 0 + +while: li $a0, '\r' + li $v0, PUT_CHAR + syscall + + move $a0, $s0 + li $a1, 4 + sll $a1, $a1, 16 + ori $a1, $a1, 10 + li $v0, PRINT_INT + syscall + + li $a0, '\t' + li $v0, PUT_CHAR + syscall + + move $a0, $s1 + li $a1, 4 + sll $a1, $a1, 16 + ori $a1, $a1, 10 + li $v0, PRINT_INT + syscall + + li $a0, '\t' + li $v0, PUT_CHAR + syscall + + move $a0, $s2 + li $a1, 4 + sll $a1, $a1, 16 + ori $a1, $a1, 10 + li $v0, PRINT_INT + syscall + + addu $sp, $sp, -4 + sw $ra, 0($sp) + li $a0, 100 + jal delay + + remi $t0, $s0, 10 + bnez $t0, ignore1 + addi $s0, $s0, 1 + li $s3, 0 + +ignore1: + remi $t0, $s1, 2 + bnez $t0, ignore5 + addi $s1, $s1, 1 + li $s4, 0 + +ignore5: + addi $s2, $s2, 1 + j while + +delay: li $v0, RESET_CORE_TIMER + syscall + +count: li $v0, READ_CORE_TIMER + syscall + mul $t0, $a0, 20000 + blt $v0, $t0, count + + jr $ra