From d98f46ce647846b0aa30b2e16a30fd4e152a1bf5 Mon Sep 17 00:00:00 2001 From: Carlos Maiolino Date: Thu, 10 Jul 2025 22:55:07 +0200 Subject: Add new code Signed-off-by: Carlos Maiolino --- PGU/OLD/asm/exit.s | 17 +++++++++++++++++ PGU/OLD/asm/max.c | 27 +++++++++++++++++++++++++++ PGU/OLD/asm/max.s | 39 +++++++++++++++++++++++++++++++++++++++ PGU/OLD/asm/maximum | Bin 0 -> 1120 bytes PGU/OLD/asm/maximum.s | 14 ++++++++++++++ 5 files changed, 97 insertions(+) create mode 100644 PGU/OLD/asm/exit.s create mode 100644 PGU/OLD/asm/max.c create mode 100644 PGU/OLD/asm/max.s create mode 100644 PGU/OLD/asm/maximum create mode 100644 PGU/OLD/asm/maximum.s (limited to 'PGU/OLD/asm') diff --git a/PGU/OLD/asm/exit.s b/PGU/OLD/asm/exit.s new file mode 100644 index 0000000..b1ef45b --- /dev/null +++ b/PGU/OLD/asm/exit.s @@ -0,0 +1,17 @@ +.section .data + +.section .text + +.globl _start + +_start: + + # %eax should contain syscall number + # to be executed (exit syscall num: 1) + movl $1, %eax + + # %ebx contains syscall argument + movl $5, %ebx + + #Call syscall interrupt + int $0x80 diff --git a/PGU/OLD/asm/max.c b/PGU/OLD/asm/max.c new file mode 100644 index 0000000..5b4c37a --- /dev/null +++ b/PGU/OLD/asm/max.c @@ -0,0 +1,27 @@ +int main(void) +{ + + static int list[] = {10,20,30,40,5,50,60,70,80,90,0}; + int i, ret; + + ret = list[0]; + i = 0; + + /* + for (i = 0; list[i] != 0; i++) { + if (list[i] < ret) + ret = list[i]; + } + */ + while (1) { + i++; + + if (list[i] == 0) + return ret; + + if (ret > list[i]) + ret = list[i]; + } + + return ret; +} diff --git a/PGU/OLD/asm/max.s b/PGU/OLD/asm/max.s new file mode 100644 index 0000000..21f750a --- /dev/null +++ b/PGU/OLD/asm/max.s @@ -0,0 +1,39 @@ + .file "max.c" + .text + .globl main + .type main, @function +main: +.LFB0: + .cfi_startproc + movl $list.1406+8, %ecx + movl $20, %edx + movl $10, %eax +.L2: + cmpl %edx, %eax + cmovg %edx, %eax + addl $4, %ecx + movl -4(%ecx), %edx + testl %edx, %edx + jne .L2 + rep ret + .cfi_endproc +.LFE0: + .size main, .-main + .section .rodata + .align 32 + .type list.1406, @object + .size list.1406, 44 +list.1406: + .long 10 + .long 20 + .long 30 + .long 40 + .long 5 + .long 50 + .long 60 + .long 70 + .long 80 + .long 90 + .long 0 + .ident "GCC: (GNU) 6.2.1 20160916 (Red Hat 6.2.1-2)" + .section .note.GNU-stack,"",@progbits diff --git a/PGU/OLD/asm/maximum b/PGU/OLD/asm/maximum new file mode 100644 index 0000000..4c7b855 Binary files /dev/null and b/PGU/OLD/asm/maximum differ diff --git a/PGU/OLD/asm/maximum.s b/PGU/OLD/asm/maximum.s new file mode 100644 index 0000000..cb6394c --- /dev/null +++ b/PGU/OLD/asm/maximum.s @@ -0,0 +1,14 @@ +#%edi holds the current position +#%ebx hold the current highest value +#%eax hold the current element being examined + +.section.data data_items: +.long 3, 4, 5, 65, 44, 36, 99, 6, 7, 8, 9, 0 + data_end:.section.text.globl _start + _start:movl $ (data_items), %edi +movl (%edi), %eax +movl % eax, %ebx +start_loop:cmpl $ (data_end), %edi +je loop_exit +addl $4, %edi +movl (%edi), %eax cmpl % ebx, %eax jle start_loop movl % eax, %ebx jmp start_loop loop_exit:movl $1, %eax int $0x80 -- cgit v1.2.3