From 19237481446f4fd7c501ad5be6d02e811f628538 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 23 Oct 2023 18:07:52 +0000 Subject: [PATCH] Initial Commit --- Makefile | 34 ++++++++++++++++++++++++++++++++++ asm.txt | 23 +++++++++++++++++++++++ calc | Bin 0 -> 16824 bytes calc-cpp | Bin 0 -> 16784 bytes calc-cpp.o | Bin 0 -> 1600 bytes calc.asm | 19 +++++++++++++++++++ calc.cpp | 14 ++++++++++++++ calc.o | Bin 0 -> 976 bytes cpp.txt | 23 +++++++++++++++++++++++ main.cpp | 13 +++++++++++++ main.o | Bin 0 -> 3552 bytes 11 files changed, 126 insertions(+) create mode 100644 Makefile create mode 100644 asm.txt create mode 100755 calc create mode 100755 calc-cpp create mode 100644 calc-cpp.o create mode 100644 calc.asm create mode 100644 calc.cpp create mode 100644 calc.o create mode 100644 cpp.txt create mode 100644 main.cpp create mode 100644 main.o diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c56d700 --- /dev/null +++ b/Makefile @@ -0,0 +1,34 @@ +all: link + +build: build-asm build-cpp build-main + +asm: build-main link-asm +cpp: build-main link-cpp + + +build-main: + g++ -o main.o -c main.cpp + +build-asm: + nasm -felf64 calc.asm + +build-cpp: + g++ -o calc-cpp.o -c calc.cpp + +link: build-main link-asm link-cpp + +link-asm: build-asm + g++ -o calc calc.o main.o + +link-cpp: build-cpp + g++ -o calc-cpp calc-cpp.o main.o + +clean: + rm *.o *.txt calc calc-cpp + +run: build link + ./calc + +test: build link + echo "24 12" | /bin/time -v -o asm.txt ./calc + echo "24 12" | /bin/time -v -o cpp.txt ./calc-cpp \ No newline at end of file diff --git a/asm.txt b/asm.txt new file mode 100644 index 0000000..da708bc --- /dev/null +++ b/asm.txt @@ -0,0 +1,23 @@ + Command being timed: "./calc" + User time (seconds): 0.00 + System time (seconds): 0.00 + Percent of CPU this job got: 100% + Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00 + Average shared text size (kbytes): 0 + Average unshared data size (kbytes): 0 + Average stack size (kbytes): 0 + Average total size (kbytes): 0 + Maximum resident set size (kbytes): 3824 + Average resident set size (kbytes): 0 + Major (requiring I/O) page faults: 0 + Minor (reclaiming a frame) page faults: 142 + Voluntary context switches: 0 + Involuntary context switches: 0 + Swaps: 0 + File system inputs: 0 + File system outputs: 0 + Socket messages sent: 0 + Socket messages received: 0 + Signals delivered: 0 + Page size (bytes): 4096 + Exit status: 0 diff --git a/calc b/calc new file mode 100755 index 0000000000000000000000000000000000000000..a9deb99f34605ebbdb27960925cdab2d93422ca5 GIT binary patch literal 16824 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 literal 0 HcmV?d00001 diff --git a/calc.asm b/calc.asm new file mode 100644 index 0000000..880c836 --- /dev/null +++ b/calc.asm @@ -0,0 +1,19 @@ +section .data + feet_in3: dq 1728.00 + pi: dq 3.141592 + half_it: dq 0.5 + +section .text +global hole_calc + +hole_calc: + ; xmm0 Diameter xmm1 Volume + ; This program converts the volume of a cylinder to a depth to dig a hole. + ; + mulsd xmm1, [rel half_it] ; Convert Diameter // radius = diameter / 2.0; + mulsd xmm0, [rel feet_in3] ; Multiply diameter by 1728.00, result in xmm1 // volumeInCubicInches = volume * 1728.00; + mulsd xmm1, xmm1 ; Square Diameter, load into xmm0 + mulsd xmm1, [rel pi] ; Diameter Squared Times Pi, loaded into xmm0 + divsd xmm0, xmm1 ; Product the final result. + ret + diff --git a/calc.cpp b/calc.cpp new file mode 100644 index 0000000..9c64d92 --- /dev/null +++ b/calc.cpp @@ -0,0 +1,14 @@ +using namespace std; +extern "C" double hole_calc(double volume, double diameter) +{ + // Convert diameter to radius + double radius = diameter / 2.0; + + //Calculate the volume in cubic inches + double volumeInCubicInches = volume * 1728.00; + + // Calculate the depth using the volume, radius, and pi + double depth = volumeInCubicInches / ((radius * radius) * 3.141592); + + return depth; +} \ No newline at end of file diff --git a/calc.o b/calc.o new file mode 100644 index 0000000000000000000000000000000000000000..0dd92fa3a3418d56ac6fcd450acd1ec36d8680b4 GIT binary patch literal 976 zcmbVKF)svB5dQY=IE1)Ff(lnrZ9&gAM4`}XY@V~1-DD5BeFYkNjozOjD*wV?pp;9_ z8*j#L=2l~pmznQ--^{!>@7?Vm9W;UfVgYthB4L533^|U_Mzg~HFQi_yCMq?2y;W7V zrEuF}%AZ#J2IqGb-%)tM;fdakJLddtrKet1TXBG;RT_^>J~KPzJe_rhvD|Cj;oAO8 zZn0jR?!W0a^h`*5&-sU(NE$kl?(essqFX$SzPhuK$M1XI1D}g0G$QhJ1@dntclz>5 zWYxlRV+}%^Tw8=iTG*jAXD+%Kc+Ys4$m>~i{U;5 literal 0 HcmV?d00001 diff --git a/cpp.txt b/cpp.txt new file mode 100644 index 0000000..9b52167 --- /dev/null +++ b/cpp.txt @@ -0,0 +1,23 @@ + Command being timed: "./calc-cpp" + User time (seconds): 0.00 + System time (seconds): 0.00 + Percent of CPU this job got: 100% + Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00 + Average shared text size (kbytes): 0 + Average unshared data size (kbytes): 0 + Average stack size (kbytes): 0 + Average total size (kbytes): 0 + Maximum resident set size (kbytes): 3820 + Average resident set size (kbytes): 0 + Major (requiring I/O) page faults: 0 + Minor (reclaiming a frame) page faults: 141 + Voluntary context switches: 0 + Involuntary context switches: 4 + Swaps: 0 + File system inputs: 0 + File system outputs: 0 + Socket messages sent: 0 + Socket messages received: 0 + Signals delivered: 0 + Page size (bytes): 4096 + Exit status: 0 diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..46d7171 --- /dev/null +++ b/main.cpp @@ -0,0 +1,13 @@ +#include +using namespace std; +// hole_calc(volume, diameter) +extern "C" double hole_calc(double, double); + +int main() +{ + double diameter, volume; + cout << "Please enter the diameter in in, press enter and then the volume in cubic feet, and press enter again." << endl; + cin >> diameter >> volume; + cout << "Dig hole to " << hole_calc(volume, diameter) << " in deep." << endl; + return 0; +} \ No newline at end of file diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..f3ee7a3ac186861fd01b643273ea29737e101480 GIT binary patch literal 3552 zcmbuBO>Epm6o6+p=?|stE~Q1FqShCx1QKgE2@r}@ZJIdoLYjtbf(lYJcx@+ZW!GN$ zC!~c0PzqudMXJOd&fI!IsyIN@h(C!l=7Hd*hj8>aHauo?_3uZ{Bu9v2U_=H&(x5u&A)Sb2(qSa z&E>j&p3`&g26KVl$_7*Q)*o>Y47;D2i2PVicj8oMwk`do(`;GcA)fy1&M%u{<*@L4 zYk9X7?W`{EW}??WS>D;(BP8nEpF=E>Pbp8n##wA~>mcfP7~^}~iR~};_V#8sF&U7_ zx@`ouV!NU3D`Cx6EXQcrs5mbC^(al>4gx-IxE9*D%y7}GM-3az%&6*^%A9S7JqnsU z;xcbIu1ZFnd8OvnZ6)*+fKt`am1# z=9t-c!aENSu6Jx=hGYrZK-K{d%IUZvnHy6ivy{)AJ$~fqEm*z+{CPh15L@kJ{}l$Ck;FwX0u7?yOnT!kW$BU zTqgu|ph#&D8lhuSB#u#cZh+>w6b>1+>>%_blj#M=A#`l~>gAzvaEYq4Off7AIbeDb zMyrJNpj-)yMYCr3H1rK849cdaO#$n#8Uf7WK}6eVl+9_XRbHl(Z<_m2ua1sZv}rm$ zba`B(aa`NA>Sgo4MFh_R#C!!^Cn{b&&?ZNxDqe+ZELOkClAWkHexOZR1aAsz8g-bT zn_Gm{!d#$cZGp}iPMr;fgN_$a$le|(Ly3lq+9DWQfk$glqq^PBXe2f=mkerz_7apD z6SQtvIH-3jwch(qTqv^zXVwhF2@<-9P`9~E`)tqivNtnq00n^ zF(+}KDvZVqxsVawL57dGU#$ceafljRZ-hn_+R%^Nn&|m<-B97D91_(sLW8K)ARwym z#R?n63xpcJZ(Jv;=`|Ygy(g;cg|-SG&tAA?%muE`yOG-Ty{7GlV9T8C8lCguzXG1x z|7sNQ#u^b?FyQSS90cJVA9qEegvMRd5r^w`-w*6 zFZ2(fgE5o-pL6iBFyw90e-U`Q`sML*1<~V%-SJOCU-*mqwVNAVj`9ud;(6d6qi@n5 ir%CQTAX31O7Rb#+!4fLLySttLHJ<;cEXu(v>Hja$7f|m2 literal 0 HcmV?d00001