Initial Commit
This commit is contained in:
34
Makefile
Normal file
34
Makefile
Normal file
@@ -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
|
||||
23
asm.txt
Normal file
23
asm.txt
Normal file
@@ -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
|
||||
BIN
calc-cpp.o
Normal file
BIN
calc-cpp.o
Normal file
Binary file not shown.
19
calc.asm
Normal file
19
calc.asm
Normal file
@@ -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
|
||||
|
||||
14
calc.cpp
Normal file
14
calc.cpp
Normal file
@@ -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;
|
||||
}
|
||||
23
cpp.txt
Normal file
23
cpp.txt
Normal file
@@ -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
|
||||
13
main.cpp
Normal file
13
main.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#include <iostream>
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user