diff --git a/lec10/coredump.c b/lec10/coredump.c
new file mode 100644
index 0000000000000000000000000000000000000000..97c148287a9ea88abb6d98004544629aee8c35e2
--- /dev/null
+++ b/lec10/coredump.c
@@ -0,0 +1,4 @@
+int main()
+{
+	int a = 10/0;
+}
diff --git a/lec10/gprof.32.txt b/lec10/gprof.32.txt
new file mode 100644
index 0000000000000000000000000000000000000000..59e5fdf5d68dfa2f0cab93fc770bf003a506a5bf
--- /dev/null
+++ b/lec10/gprof.32.txt
@@ -0,0 +1,156 @@
+Flat profile:
+
+Each sample counts as 0.01 seconds.
+  %   cumulative   self              self     total           
+ time   seconds   seconds    calls  ns/call  ns/call  name    
+ 40.94      0.57     0.57                             main
+ 33.40      1.04     0.47 171798692     2.72     2.72  fxMul2
+ 21.55      1.34     0.30 171798692     1.76     1.76  fxMul1
+  4.67      1.41     0.07                             frame_dummy
+
+ %         the percentage of the total running time of the
+time       program used by this function.
+
+cumulative a running sum of the number of seconds accounted
+ seconds   for by this function and those listed above it.
+
+ self      the number of seconds accounted for by this
+seconds    function alone.  This is the major sort for this
+           listing.
+
+calls      the number of times this function was invoked, if
+           this function is profiled, else blank.
+
+ self      the average number of milliseconds spent in this
+ms/call    function per call, if this function is profiled,
+	   else blank.
+
+ total     the average number of milliseconds spent in this
+ms/call    function and its descendents per call, if this
+	   function is profiled, else blank.
+
+name       the name of the function.  This is the minor sort
+           for this listing. The index shows the location of
+	   the function in the gprof listing. If the index is
+	   in parenthesis it shows where it would appear in
+	   the gprof listing if it were to be printed.
+
+Copyright (C) 2012-2018 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+		     Call graph (explanation follows)
+
+
+granularity: each sample hit covers 2 byte(s) for 0.71% of 1.41 seconds
+
+index % time    self  children    called     name
+                                                 <spontaneous>
+[1]     95.4    0.57    0.77                 main [1]
+                0.47    0.00 171798692/171798692     fxMul2 [2]
+                0.30    0.00 171798692/171798692     fxMul1 [3]
+-----------------------------------------------
+                0.47    0.00 171798692/171798692     main [1]
+[2]     33.2    0.47    0.00 171798692         fxMul2 [2]
+-----------------------------------------------
+                0.30    0.00 171798692/171798692     main [1]
+[3]     21.4    0.30    0.00 171798692         fxMul1 [3]
+-----------------------------------------------
+                                                 <spontaneous>
+[4]      4.6    0.07    0.00                 frame_dummy [4]
+-----------------------------------------------
+
+ This table describes the call tree of the program, and was sorted by
+ the total amount of time spent in each function and its children.
+
+ Each entry in this table consists of several lines.  The line with the
+ index number at the left hand margin lists the current function.
+ The lines above it list the functions that called this function,
+ and the lines below it list the functions this one called.
+ This line lists:
+     index	A unique number given to each element of the table.
+		Index numbers are sorted numerically.
+		The index number is printed next to every function name so
+		it is easier to look up where the function is in the table.
+
+     % time	This is the percentage of the `total' time that was spent
+		in this function and its children.  Note that due to
+		different viewpoints, functions excluded by options, etc,
+		these numbers will NOT add up to 100%.
+
+     self	This is the total amount of time spent in this function.
+
+     children	This is the total amount of time propagated into this
+		function by its children.
+
+     called	This is the number of times the function was called.
+		If the function called itself recursively, the number
+		only includes non-recursive calls, and is followed by
+		a `+' and the number of recursive calls.
+
+     name	The name of the current function.  The index number is
+		printed after it.  If the function is a member of a
+		cycle, the cycle number is printed between the
+		function's name and the index number.
+
+
+ For the function's parents, the fields have the following meanings:
+
+     self	This is the amount of time that was propagated directly
+		from the function into this parent.
+
+     children	This is the amount of time that was propagated from
+		the function's children into this parent.
+
+     called	This is the number of times this parent called the
+		function `/' the total number of times the function
+		was called.  Recursive calls to the function are not
+		included in the number after the `/'.
+
+     name	This is the name of the parent.  The parent's index
+		number is printed after it.  If the parent is a
+		member of a cycle, the cycle number is printed between
+		the name and the index number.
+
+ If the parents of the function cannot be determined, the word
+ `<spontaneous>' is printed in the `name' field, and all the other
+ fields are blank.
+
+ For the function's children, the fields have the following meanings:
+
+     self	This is the amount of time that was propagated directly
+		from the child into the function.
+
+     children	This is the amount of time that was propagated from the
+		child's children to the function.
+
+     called	This is the number of times the function called
+		this child `/' the total number of times the child
+		was called.  Recursive calls by the child are not
+		listed in the number after the `/'.
+
+     name	This is the name of the child.  The child's index
+		number is printed after it.  If the child is a
+		member of a cycle, the cycle number is printed
+		between the name and the index number.
+
+ If there are any cycles (circles) in the call graph, there is an
+ entry for the cycle-as-a-whole.  This entry shows who called the
+ cycle (as parents) and the members of the cycle (as children.)
+ The `+' recursive calls entry shows the number of function calls that
+ were internal to the cycle, and the calls entry for each member shows,
+ for that member, how many times it was called from other members of
+ the cycle.
+
+Copyright (C) 2012-2018 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Index by function name
+
+   [4] frame_dummy             [2] fxMul2
+   [3] fxMul1                  [1] main
diff --git a/lec10/gprof.64.txt b/lec10/gprof.64.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8584f99394287f4062d290a1043481ed850c4f4a
--- /dev/null
+++ b/lec10/gprof.64.txt
@@ -0,0 +1,156 @@
+Flat profile:
+
+Each sample counts as 0.01 seconds.
+  %   cumulative   self              self     total           
+ time   seconds   seconds    calls  ns/call  ns/call  name    
+ 34.36      0.41     0.41                             main
+ 32.68      0.80     0.39 171798692     2.28     2.28  fxMul2
+ 29.75      1.16     0.36 171798692     2.08     2.08  fxMul1
+  3.77      1.21     0.05                             frame_dummy
+
+ %         the percentage of the total running time of the
+time       program used by this function.
+
+cumulative a running sum of the number of seconds accounted
+ seconds   for by this function and those listed above it.
+
+ self      the number of seconds accounted for by this
+seconds    function alone.  This is the major sort for this
+           listing.
+
+calls      the number of times this function was invoked, if
+           this function is profiled, else blank.
+
+ self      the average number of milliseconds spent in this
+ms/call    function per call, if this function is profiled,
+	   else blank.
+
+ total     the average number of milliseconds spent in this
+ms/call    function and its descendents per call, if this
+	   function is profiled, else blank.
+
+name       the name of the function.  This is the minor sort
+           for this listing. The index shows the location of
+	   the function in the gprof listing. If the index is
+	   in parenthesis it shows where it would appear in
+	   the gprof listing if it were to be printed.
+
+Copyright (C) 2012-2018 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+		     Call graph (explanation follows)
+
+
+granularity: each sample hit covers 2 byte(s) for 0.83% of 1.21 seconds
+
+index % time    self  children    called     name
+                                                 <spontaneous>
+[1]     96.2    0.41    0.75                 main [1]
+                0.39    0.00 171798692/171798692     fxMul2 [2]
+                0.36    0.00 171798692/171798692     fxMul1 [3]
+-----------------------------------------------
+                0.39    0.00 171798692/171798692     main [1]
+[2]     32.5    0.39    0.00 171798692         fxMul2 [2]
+-----------------------------------------------
+                0.36    0.00 171798692/171798692     main [1]
+[3]     29.6    0.36    0.00 171798692         fxMul1 [3]
+-----------------------------------------------
+                                                 <spontaneous>
+[4]      3.8    0.05    0.00                 frame_dummy [4]
+-----------------------------------------------
+
+ This table describes the call tree of the program, and was sorted by
+ the total amount of time spent in each function and its children.
+
+ Each entry in this table consists of several lines.  The line with the
+ index number at the left hand margin lists the current function.
+ The lines above it list the functions that called this function,
+ and the lines below it list the functions this one called.
+ This line lists:
+     index	A unique number given to each element of the table.
+		Index numbers are sorted numerically.
+		The index number is printed next to every function name so
+		it is easier to look up where the function is in the table.
+
+     % time	This is the percentage of the `total' time that was spent
+		in this function and its children.  Note that due to
+		different viewpoints, functions excluded by options, etc,
+		these numbers will NOT add up to 100%.
+
+     self	This is the total amount of time spent in this function.
+
+     children	This is the total amount of time propagated into this
+		function by its children.
+
+     called	This is the number of times the function was called.
+		If the function called itself recursively, the number
+		only includes non-recursive calls, and is followed by
+		a `+' and the number of recursive calls.
+
+     name	The name of the current function.  The index number is
+		printed after it.  If the function is a member of a
+		cycle, the cycle number is printed between the
+		function's name and the index number.
+
+
+ For the function's parents, the fields have the following meanings:
+
+     self	This is the amount of time that was propagated directly
+		from the function into this parent.
+
+     children	This is the amount of time that was propagated from
+		the function's children into this parent.
+
+     called	This is the number of times this parent called the
+		function `/' the total number of times the function
+		was called.  Recursive calls to the function are not
+		included in the number after the `/'.
+
+     name	This is the name of the parent.  The parent's index
+		number is printed after it.  If the parent is a
+		member of a cycle, the cycle number is printed between
+		the name and the index number.
+
+ If the parents of the function cannot be determined, the word
+ `<spontaneous>' is printed in the `name' field, and all the other
+ fields are blank.
+
+ For the function's children, the fields have the following meanings:
+
+     self	This is the amount of time that was propagated directly
+		from the child into the function.
+
+     children	This is the amount of time that was propagated from the
+		child's children to the function.
+
+     called	This is the number of times the function called
+		this child `/' the total number of times the child
+		was called.  Recursive calls by the child are not
+		listed in the number after the `/'.
+
+     name	This is the name of the child.  The child's index
+		number is printed after it.  If the child is a
+		member of a cycle, the cycle number is printed
+		between the name and the index number.
+
+ If there are any cycles (circles) in the call graph, there is an
+ entry for the cycle-as-a-whole.  This entry shows who called the
+ cycle (as parents) and the members of the cycle (as children.)
+ The `+' recursive calls entry shows the number of function calls that
+ were internal to the cycle, and the calls entry for each member shows,
+ for that member, how many times it was called from other members of
+ the cycle.
+
+Copyright (C) 2012-2018 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Index by function name
+
+   [4] frame_dummy             [2] fxMul2
+   [3] fxMul1                  [1] main
diff --git a/lec10/test.c b/lec10/test.c
new file mode 100644
index 0000000000000000000000000000000000000000..16f9cf84ccc7e128ccdb1a792aef5680f8e3fe5f
--- /dev/null
+++ b/lec10/test.c
@@ -0,0 +1,50 @@
+#include <stdio.h>
+#include <math.h>
+// #### #### #### #### . #### #### #### #### - 32bit 
+// Sbit 15bit . 16bit 
+#define FX_Q_NUM 16
+#define FX_2_MINUS_16 1.52587890625e-05F
+#define FX_2_PLUS_16 (1<<16)
+#define FX_S_15_16 11516 // 1:singed 15 16
+#define FX_SYSTEM FX_S_15_16
+
+typedef int fixed32;
+
+
+fixed32 fromFloat(float fa)
+{
+	return (fixed32) (fa * FX_2_PLUS_16);
+}
+float toFloat(fixed32 xa)
+{
+	return ((float) (xa)) * FX_2_MINUS_16;
+}
+fixed32 fxAdd(fixed32 a, fixed32 b)
+{
+	//return fromFloat((toFloat(a) + toFloat(b)));
+	return  (fixed32)
+		( FX_2_PLUS_16 * 
+	       	(((float) (a)) * FX_2_MINUS_16) + 
+		(((float) (b) * FX_2_MINUS_16))
+		);
+}
+fixed32 fxAdd2(fixed32 a, fixed32 b)
+{
+	return a+b;
+}
+
+int main()
+{
+	long long i=0;
+	int ia, ib, ic, ic2;
+	float fa;
+	//fscanf(stdin, "%d %d", &ia, &ib);
+	for (i=0; i< (long long)256*256*256*256; i+=(25))
+	{
+		ic = fxAdd(i, i);
+		ic2 = fxAdd2(i, i);
+		//fprintf(stdout, "%f + %f : %f, %f diff=%d\n", toFloat(i), toFloat(i),toFloat(ic),toFloat(ic2),ic-ic2);
+	}
+
+}
+
diff --git a/lec10/test2.c b/lec10/test2.c
new file mode 100644
index 0000000000000000000000000000000000000000..6dbe81794ad0a9462a7ba21ec4659e616a0cfa10
--- /dev/null
+++ b/lec10/test2.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+
+int fxMul1(int a, int b)
+{
+	return a*b; 
+}
+
+int fxMul2(int a, int b)
+{
+	return (int)((long long) a * (long long) b) ; 
+}
+
+int main()
+{
+	long long i=0; 
+	int ia, ib, ic, ic2; 
+	float fa; 
+	// fscanf(stdin, "%d %d", &ia, &ib); 
+	for ( i = 0; i < (long long) 256*256*256*256; i+=(25))
+	{
+		ic = fxMul1(i, i); 
+	}
+	for ( i = 0; i < (long long) 256*256*256*256; i+=(25))
+	{
+		ic = fxMul2(i, i); 
+	}
+}