forked from aaronbloomfield/pdr
-
Notifications
You must be signed in to change notification settings - Fork 228
/
index.html
232 lines (232 loc) · 10.2 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Program and Data Representation: Slides</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="../markdown.css" />
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<h1 id="program-and-data-representation-slides">Program and Data
Representation: Slides</h1>
<p><a href="../readme.html">Go up to the main README file</a> (<a
href="../readme.md">md</a>)</p>
<p><a href="../uva/course-introduction.html#/">Course Introduction</a>
<strong>(CS 2150 specific)</strong></p>
<ul>
<li>Source code: <a
href="../uva/code/introduction/DataStructureComparison.java.html">DataStructureComparison.java</a>
(<a
href="../uva/code/introduction/DataStructureComparison.java">src</a>)</li>
</ul>
<p><a href="01-cpp.html#/">Slide set 1: C++</a></p>
<ul>
<li>Source code:
<ul>
<li>General source code: <a
href="code/01-cpp/evenodd.cpp.html">evenodd.cpp</a> (<a
href="code/01-cpp/evenodd.cpp">src</a>), <a
href="code/01-cpp/pointers.cpp.html">pointers.cpp</a> (<a
href="code/01-cpp/pointers.cpp">src</a>), <a
href="code/01-cpp/swap.cpp.html">swap.cpp</a> (<a
href="code/01-cpp/swap.cpp">src</a>), <a
href="code/01-cpp/dynamic_allocation.cpp.html">dynamic_allocation.cpp</a>
(<a href="code/01-cpp/dynamic_allocation.cpp">src</a>), <a
href="code/01-cpp/delete.cpp.html">delete.cpp</a> (<a
href="code/01-cpp/delete.cpp">src</a>), <a
href="code/01-cpp/memory.cpp.html">memory.cpp</a> (<a
href="code/01-cpp/memory.cpp">src</a>), <a
href="code/01-cpp/swapref.cpp.html">swapref.cpp</a> (<a
href="code/01-cpp/swapref.cpp">src</a>), <a
href="code/01-cpp/cpptest.cpp.html">cpptest.cpp</a> (<a
href="code/01-cpp/cpptest.cpp">src</a>)</li>
<li>IntCell code: <a
href="code/01-cpp/IntCell.java.html">IntCell.java</a> (<a
href="code/01-cpp/IntCell.java">src</a>), <a
href="code/01-cpp/TestIntCell.cpp.html">TestIntCell.cpp</a> (<a
href="code/01-cpp/TestIntCell.cpp">src</a>), <a
href="code/01-cpp/IntCell.h.html">IntCell.h</a> (<a
href="code/01-cpp/IntCell.h">src</a>), <a
href="code/01-cpp/IntCell.cpp.html">IntCell.cpp</a> (<a
href="code/01-cpp/IntCell.cpp">src</a>)</li>
<li>Rational code: <a
href="code/01-cpp/Rational.java.html">Rational.java</a> (<a
href="code/01-cpp/Rational.java">src</a>), <a
href="code/01-cpp/Rational.h.html">Rational.h</a> (<a
href="code/01-cpp/Rational.h">src</a>), <a
href="code/01-cpp/Rational.cpp.html">Rational.cpp</a> (<a
href="code/01-cpp/Rational.cpp">src</a>), <a
href="code/01-cpp/TestRational.cpp.html">TestRational.cpp</a> (<a
href="code/01-cpp/TestRational.cpp">src</a>)</li>
</ul></li>
</ul>
<p><a href="02-lists.html#/">Slide set 2: Lists</a></p>
<ul>
<li>Source code: <a
href="code/02-lists/findMax.cpp.html">findMax.cpp</a> (<a
href="code/02-lists/findMax.cpp">src</a>), <a
href="code/02-lists/objectCell.h.html">objectCell.h</a> (<a
href="code/02-lists/objectCell.h">src</a>), <a
href="code/02-lists/objectCellMain.cpp.html">objectCellMain.cpp</a> (<a
href="code/02-lists/objectCellMain.cpp">src</a>)</li>
</ul>
<p><a href="03-numbers.html#/">Slide set 3: Numbers</a></p>
<ul>
<li>Source code: <a
href="code/03-numbers/float_to_hex.cpp.html">float_to_hex.cpp</a> (<a
href="code/03-numbers/float_to_hex.cpp">src</a>), <a
href="code/03-numbers/FloatTest.java.html">FloatTest.java</a> (<a
href="code/03-numbers/FloatTest.java">src</a>)</li>
</ul>
<p><a href="04-arrays-bigoh.html#/">Slide set 4: Arrays &
Big-Oh</a></p>
<ul>
<li>Source code: <a
href="code/04-arrays-bigoh/cmdlineparams.cpp.html">cmdlineparams.cpp</a>
(<a href="code/04-arrays-bigoh/cmdlineparams.cpp">src</a>)</li>
</ul>
<p><a href="05-trees.html#/">Slide set 5: Trees</a></p>
<ul>
<li>The trees diagrams were generated from the files described <a
href="graphs/index.html">here</a></li>
<li>The tree animation site is <a
href="https://www.cs.usfca.edu/~galles/visualization/AVLtree.html">here</a></li>
</ul>
<p><a href="06-hashes.html#/">Slide set 6: Hashes</a></p>
<ul>
<li>The hash table bucket signs as both a <a
href="misc/hash-table-buckets.pdf">pdf</a> and an <a
href="misc/hash-table-buckets.odt">odt</a></li>
</ul>
<p><a href="07-ibcm.html#/">Slide set 7: IBCM (machine language)</a></p>
<ul>
<li>The online simulator is <a
href="http://pegasus.cs.virginia.edu/ibcm/">here</a></li>
<li>Source code: <a href="../ibcm/summation.ibcm">summation.ibcm</a>, <a
href="../ibcm/array-summation.ibcm">array-summation.ibcm</a></li>
<li><a href="../book/ibcm-chapter.pdf">IBCM book chapter</a> as the
reading</li>
<li>There is a separate <a href="../ibcm/index.html">IBCM section</a> of
this repository with more IBCM information, although that additional
information will not be needed in this course</li>
</ul>
<p>Slide set 8: 64 bit assembly language</p>
<ul>
<li>64 bit materials: <a href="08-assembly-64bit.html#/">64 bit assembly
slides</a>
<ul>
<li>The x86 book chapters on <a
href="../book/x86-64bit-asm-chapter.pdf">x86</a> and the <a
href="../book/x86-64bit-ccc-chapter.pdf">C calling convention</a> as the
reading
<ul>
<li>Another good reading document is the <a
href="https://www.cs.cmu.edu/~fp/courses/15213-s07/misc/asm64-handout.pdf">x86-64
Machine-Level Programming document</a> from CMU, although they use the
other assembly language format</li>
</ul></li>
<li>The official (complete but harder to read) Linux x86-64 calling
convention docs: section 3.2 of <a
href="https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-1.0.pdf">System
V Application Binary Interface AMD64 Architecture Processor
Supplement</a>, and the <a
href="https://itanium-cxx-abi.github.io/cxx-abi/">Itanium C++
ABI</a></li>
<li>Source code
<ul>
<li>The generated assembly was generated using <code>make asm</code>,
which uses gcc/g++; to generate it using clang/clang++, use the
‘asmclang’ target</li>
<li><a href="code/08-assembly-64bit/Makefile.html">Makefile</a> (<a
href="code/08-assembly-64bit/Makefile">src</a>)</li>
<li>Absolute value example: <a
href="code/08-assembly-64bit/test_abs.cpp.html">test_abs.cpp</a> (<a
href="code/08-assembly-64bit/test_abs.cpp">src</a>), <a
href="code/08-assembly-64bit/test_abs_c.c.html">test_abs_c.c</a> (<a
href="code/08-assembly-64bit/test_abs_c.c">src</a>), <a
href="code/08-assembly-64bit/test_abs.s.html">test_abs.s</a> (<a
href="code/08-assembly-64bit/test_abs.s">src</a>), <a
href="code/08-assembly-64bit/test_abs_c.s.html">test_abs_c.s</a> (<a
href="code/08-assembly-64bit/test_abs_c.s">src</a>), <a
href="code/08-assembly-64bit/test_abs-non-intel.s.html">test_abs-non-intel.s</a>
(<a href="code/08-assembly-64bit/test_abs-non-intel.s">src</a>)</li>
<li>Fibonacci example: <a
href="code/08-assembly-64bit/test_fib.cpp.html">test_fib.cpp</a> (<a
href="code/08-assembly-64bit/test_fib.cpp">src</a>), <a
href="code/08-assembly-64bit/test_fib.s.html">test_fib.s</a> (<a
href="code/08-assembly-64bit/test_fib.s">src</a>)</li>
<li>Max example: <a
href="code/08-assembly-64bit/test_max.cpp.html">test_max.cpp</a> (<a
href="code/08-assembly-64bit/test_max.cpp">src</a>), <a
href="code/08-assembly-64bit/test_max.s.html">test_max.s</a> (<a
href="code/08-assembly-64bit/test_max.s">src</a>), <a
href="code/08-assembly-64bit/test_max-O2.s.html">test_max-O2.s</a> (<a
href="code/08-assembly-64bit/test_max-O2.s">src</a>), <a
href="code/08-assembly-64bit/test_max-noextern.s.html">test_max-noextern.s</a>
(<a href="code/08-assembly-64bit/test_max-noextern.s">src</a>)</li>
<li>String compare example: <a
href="code/08-assembly-64bit/test_string_compare.cpp.html">test_string_compare.cpp</a>
(<a href="code/08-assembly-64bit/test_string_compare.cpp">src</a>), <a
href="code/08-assembly-64bit/test_string_compare.s.html">test_string_compare.s</a>
(<a href="code/08-assembly-64bit/test_string_compare.s">src</a>)</li>
</ul></li>
<li>The tutorial for <a href="../labs/lab08/index.html">lab 8</a> (<a
href="../labs/lab08/index.md">md</a>)
<ul>
<li>Tutorial 8 is nasm, which consists of two PDF book chapters that are
contained in this repository: <a
href="../book/x86-64bit-asm-chapter.pdf">x86 Assembly</a> and <a
href="../book/x86-64bit-ccc-chapter.pdf">The x86 C Calling
Convention</a>; the contain more examples of assembly code</li>
<li>You can skip a few of the sections (feel free to look at them if
interested, but they are not needed): Floating Point Instructions, SIMD
Parallelism, Saturated Arithmetic, and Graphics.</li>
</ul></li>
<li>You can view the <a href="32bit.html">32 bit assembly material</a>
(<a href="32bit.md">md</a>), which was used in past years.</li>
</ul></li>
</ul>
<p><a href="09-advanced-cpp.html#/">Slide set 9: Advanced C++</a></p>
<ul>
<li>Source code: <a
href="code/09-advanced-cpp/name-contact.cpp.html">name-contact.cpp</a>
(<a href="code/09-advanced-cpp/name-contact.cpp">src</a>)</li>
</ul>
<p><a href="10-heaps-huffman.html#/">Slide set 10: Heaps and Huffman
coding</a></p>
<ul>
<li>Source code: <a
href="code/10-heaps-huffman/binary_heap.cpp.html">binary_heap.cpp</a>
(<a href="code/10-heaps-huffman/binary_heap.cpp">src</a>), <a
href="code/10-heaps-huffman/binary_heap.h.html">binary_heap.h</a> (<a
href="code/10-heaps-huffman/binary_heap.h">src</a>), <a
href="code/10-heaps-huffman/heap-test.cpp.html">heap-test.cpp</a> (<a
href="code/10-heaps-huffman/heap-test.cpp">src</a>)</li>
</ul>
<p><a href="11-graphs.html#/">Slide set 11: Graphs</a></p>
<p><a href="12-memory.html#/">Slide set 12: Memory</a></p>
<ul>
<li>Source code: <a href="code/12-memory/cache.cpp.html">cache.cpp</a>
(<a href="code/12-memory/cache.cpp">src</a>), <a
href="code/12-memory/strings.c.html">strings.c</a> (<a
href="code/12-memory/strings.c">src</a>)</li>
</ul>
<p><a href="13-esoteric-pls.html#/">Slide set 13: Esoteric Programming
Languages</a></p>
<p><a href="../uva/course-conclusion.html#/">Course Conclusion</a>
<strong>(CS 2150 specific)</strong></p>
</body>
</html>