From 7fecbb5170b94add41f87be5d5fb5156a828e935 Mon Sep 17 00:00:00 2001 From: zombie Date: Sat, 18 Sep 2021 06:06:05 -0400 Subject: [PATCH] added diff but currently it only compares length --- CMakeLists.txt | 1 + diff.asm | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 diff.asm diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e00b71..8702b0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,3 +20,4 @@ add_link_options(-fno-pie -m64 -no-pie -pedantic-errors) add_executable(length length.asm) add_executable(yes yes.asm) add_executable(case case.asm) +add_executable(diff diff.asm) diff --git a/diff.asm b/diff.asm new file mode 100644 index 0000000..e50da93 --- /dev/null +++ b/diff.asm @@ -0,0 +1,54 @@ +extern puts +%include "../inc/length_func.inc" + + + + + +section .data + text db "rEE",0 + text2 db "REEE",0 + differ db "they differ",0 + notdiffer db "they do not differ",0 + textlength dq 0 + text2length dq 0 +section .text + global main + +main: + sub rsp, 8 ;enter + + +;below we are getting the length of each string +;we do this because we dont want to compare with memory that isnt ours + + mov r8, text + call length_func + mov [textlength], rax + + mov r8, text2 + call length_func + mov [text2length], rax + + mov r8, [textlength] + mov r9, [text2length] + + cmp r8, r9 + jne _differ + + + +_differ: + mov rdi, differ + cld + call puts + jmp _end + +_notdiffer: + mov rdi, notdiffer + cld + call puts + +_end: + add rsp, 8 ;exit + ret