From 3800ddf4cd12a4fdd34a0dbc01fe7628e0e24258 Mon Sep 17 00:00:00 2001 From: Pratik Maharjan Date: Sun, 5 Apr 2026 21:50:14 +0545 Subject: [PATCH] Added simple calc made using asm and c --- simple_calc/maths.o | Bin 0 -> 720 bytes simple_calc/maths.s | 22 +++++++++++++++ simple_calc/simple_calc | Bin 0 -> 16216 bytes simple_calc/simple_calc.c | 57 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 simple_calc/maths.o create mode 100644 simple_calc/maths.s create mode 100755 simple_calc/simple_calc create mode 100644 simple_calc/simple_calc.c diff --git a/simple_calc/maths.o b/simple_calc/maths.o new file mode 100644 index 0000000000000000000000000000000000000000..24467ec6606ba69e0a77e64e84ee8d197db56708 GIT binary patch literal 720 zcmb<-^>JfjWMqH=Mg}_u1P><4z#xDm=l~XWU|?rpWBAM;aq#eG{umGu2_oVS9!BWG zWPywkz+wX{R2)Pj15O|Zq@D{|5Xk0*iu0q1GbE;@Fcg<2G31u!Fr=kqmN78s6<6k# zBqjmrk|GG50b`YjwZRh9+$Q literal 0 HcmV?d00001 diff --git a/simple_calc/maths.s b/simple_calc/maths.s new file mode 100644 index 00000000..7c803a5d --- /dev/null +++ b/simple_calc/maths.s @@ -0,0 +1,22 @@ +.section .text # This tells that the text below is code + + .global add # add is defined as global + #xmm registers are used for SIMD and floating points + add: + addss %xmm1, %xmm0 #xmm0=xmm0+xmm1 + ret + + .global sub + sub: + subss %xmm1, %xmm0 #xmm0=xmm0-xmm1 + ret + + .global mul + mul: + mulss %xmm1,%xmm0 #xmm0=xmm0*xmm1 + ret + + .global fdiv #we use fdiv so that we dont get issue of name conflict with stdlib.h in c + fdiv: + divss %xmm1, %xmm0 #xmm0=xmm0/xmm1 + ret#end of the code \ No newline at end of file diff --git a/simple_calc/simple_calc b/simple_calc/simple_calc new file mode 100755 index 0000000000000000000000000000000000000000..a2f0178f82ba9a7a64bf4f58c3c5da008e163d5d GIT binary patch literal 16216 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 + +// float functions from assembly +extern float add(float a, float b); +extern float sub(float a, float b); +extern float mul(float a, float b); +extern float fdiv(float a, float b); + +int main() { + float x, y, result; + int choice; + + while (1) { + printf("\nChoose operation:\n"); + printf("1. Add\n2. Subtract\n3. Multiply\n4. Divide\n5. Exit\n"); + printf("Enter choice: "); + scanf("%d", &choice); + + if (choice == 5) { + printf("Exiting calculator. Goodbye!\n"); + break; + } + + printf("Enter x: "); + scanf("%f", &x); + printf("Enter y: "); + scanf("%f", &y); + + switch (choice) { + case 1: + result = add(x, y); + printf("Sum of %.2f & %.2f is %.2f\n", x, y, result); + break; + case 2: + result = sub(x, y); + printf("Difference of %.2f & %.2f is %.2f\n", x, y, result); + break; + case 3: + result = mul(x, y); + printf("Product of %.2f & %.2f is %.2f\n", x, y, result); + break; + case 4: + if (y == 0.0f) { + printf("Error: Division by zero!\n"); + break; + } + result = fdiv(x, y); + printf("Division of %.2f / %.2f is %.2f\n", x, y, result); + break; + default: + printf("Invalid choice! Please select 1-5.\n"); + break; + } + } + + return 0; +} \ No newline at end of file