Program and Data Representation: Slides
Go up to the main README file (md)
Course Introduction (version from Reiss's lectures (PDF)) (CS 2150 specific)
Slide set 1: C++ (version from Reiss's lectures (PDF))
- Source code:
- General source code: evenodd.cpp (src), pointers.cpp (src), swap.cpp (src), dynamic_allocation.cpp (src), delete.cpp (src), memory.cpp (src), swapref.cpp (src), cpptest.cpp (src)
- IntCell code: IntCell.java (src), TestIntCell.cpp (src), IntCell.h (src), IntCell.cpp (src)
- Rational code: Rational.java (src), Rational.h (src), Rational.cpp (src), TestRational.cpp (src)
- Reiss's lecture recordings: 19 Jan: audio, video, view in browser; 22 Jan: audio, video, view in browser; 24 Jan: audio, video, view in browser; 26 Jan: audio, video, view in browser; 29 Jan: audio, video, view in browser; 31 Jan: audio, video, view in browser;
Slide set 2: Lists (version from Reiss's lectures (PDF))
Slide set 3: Numbers (version from Reiss's lectures (PDF))
Slide set 4: Arrays & Big-Oh (version from Reiss's lectures: part 1 part 2)
Slide set 5: Trees (version from Reiss's lectures (PDF))
Slide set 6: Hashes (version from Reiss's lectures (PDF))
Slide set 7: IBCM (machine language) (version from Reiss's lectures (PDF))
Slide set 8: assembly language: in 32 bit and 64 bit flavors
- 64 bit materials: 64 bit assembly slides (version from Reiss's lectues (PDF))
- The x86 book chapters on x86 and the C calling convention as the reading
- The official (complete but harder to read) Linux x86-64 calling convention docs: section 3.2 of System V Application Binary Interface AMD64 Architecture Processor Supplement, and the Itanium C++ ABI
Reiss's lecture recordings: 19 Mar: audio, video, view in browser; 23 Mar: audio, video, view in browser; 26 Mar: audio, video, view in browser 28 Mar: audio, video, view in browser; 30 Mar: audio, video, view in browser
- Source code
- The generated assembly was generated using
make asm
, which uses gcc/g++; to generate it using clang/clang++, use the 'asmclang' target
- Makefile (src)
- Absolute value example: test_abs.cpp (src), test_abs_c.c (src), test_abs.s (src), test_abs_c.s (src), test_abs-non-intel.s (src)
- Fibonacci example: test_fib.cpp (src), test_fib.s (src)
- Max example: test_max.cpp (src), test_max.s (src), test_max-O2.s (src), test_max-noextern.s (src)
- String compare example: test_string_compare.cpp (src), test_string_compare.s (src)
- The tutorial for lab 8 (md)
- Tutorial 8 is nasm, which consists of two PDF book chapters that are contained in this repository: x86 Assembly and The x86 C Calling Convention; the contain more examples of assembly code
- 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.
32 bit materials: 32 bit assembly slides
The x86 book chapters on x86 and the C calling convention as the reading
Source code
The generated assembly was generated using make asm
, which uses gcc/g++; to generate it using clang/clang++, use the 'asmclang' target
Makefile (src)
Absolute value example: test_abs.cpp (src), test_abs_c.c (src), test_abs.s (src), test_abs_c.s (src), test_abs-non-intel.s (src)
Fibonacci example: test_fib.cpp (src), test_fib.s (src)
Max example: test_max.cpp (src), test_max.s (src), test_max-O2.s (src), test_max-noextern.s (src)
String compare example: test_string_compare.cpp (src), test_string_compare.s (src)
The tutorial for lab 8 (md)
Tutorial 8 is nasm, which consists of two PDF book chapters that are contained in this repository: x86 Assembly and The x86 C Calling Convention; the contain more examples of assembly code
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.
Slide set 9: Advanced C++ (version from Reiss's lectures (PDF))
Slide set 10: Heaps and Huffman coding (version from Reiss's lectures (PDF))
Slide set 11: Graphs (version from Reiss's lectures (PDF))
- Reiss's lecture recordings: 11 Apr: audio, video, view in browser; 13 Apr: audio, video, view in browser; 16 Apr: audio, video, view in browser; 18 Apr: audio, video, view in browser; 20 Apr: audio, video, view in browser; 23 Apr: audio, video, view in browser;
Slide set 12: Memory (version from Reiss's lectures (PDF))
Slide set 13: Esoteric Programming Languages
Course Conclusion (CS 2150 specific)