• Stars
    star
    359
  • Rank 117,796 (Top 3 %)
  • Language
    TeX
  • License
    MIT License
  • Created about 3 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Cheat sheet for x86-64 Unix systems programming

Systems Programming Cheat Sheet

Click here to view the cheat sheet PDF.

Discussed on Hacker News and r/programming.

Introduction & Background

This cheat sheet was originally written while I was taking Introduction to Computer Systems (15-213/18-213) at Carnegie Mellon University in the Spring 2019 semester. As such, it is based heavily on the textbook Computer Systems: A Programmer's Perspective, Third Edition by Randal E. Bryant and David R. O'Hallaron, as well as other course notes.

The cheat sheet therefore contains some information that is specifically tailored to x86-64 Unix systems. For example, the material may include undefined behaviors particular to such systems. It may also assume implementation details such as the System V calling convention and AT&T assembly language syntax. In general, any quirks included are those that 213 students are expected to know.

The four-page PDF is intended to be printed on two sheets of double-sided 8.5" x 11" letter paper (sorry non-Americans).

The course allowed students to bring one double-sided piece of letter paper with notes for each exam, so I tried to cram as much as possible into the limited space. These are my cheat sheets from the midterm and final combined into one PDF.

If you've opened the PDF and don't know what any of it means, I encourage you to access the lecture slides from when I took the course. These and the textbook should be enough to supplement the cheat sheet so that the material (or at least the acronyms) make some sense.

Project Status & Contributing

This project is basically done. I created it while I was a student, and will happily make any corrections necessary. But I do not plan to expand the cheat sheet to include new material. Feel free to open an issue and ask about adding material, though.

For any corrections or discussions, please open an issue. Pull requests without prior discussion will be ignored.

Support the Project

There are a few things you can do to support the project:

  • Star the repository (and follow me on GitHub for more)
  • Share and upvote on sites like Twitter, Reddit, and Hacker News
  • Look carefully for errors and report any that you find

These things motivate me to to keep sharing what I build, and they provide validation that my work is appreciated! Thanks in advance!

Modifying & Compiling

Clone the repository.

git clone https://github.com/jstrieb/systems-programming-cheat-sheet.git && cd systems-programming-cheat-sheet

Make any modifications to Cheat Sheet.tex.

Recompile with make.

Acknowledgments

  • The entire (Spring 2019) 15-213 course staff
  • Randy Bryant and David O'Hallaron for their excellent textbook
  • Kirubel Aklilu, Matt Henderson, and Hrishikesh Bodas for studying with me when we all took 213
  • Anyone who has taken the time to read the cheat sheet and report errors

More Repositories

1

github-stats

Better GitHub statistics images for your profile, with stats from private repos too
Python
2,856
star
2

urlpages

Create and view web pages stored entirely in the URL
JavaScript
1,372
star
3

link-lock

Password-protect URLs using AES in the browser; create hidden bookmarks without a browser extension
JavaScript
856
star
4

paperify

Transform any document, web page, or eBook into a research paper (ChatGPT not required)
Shell
364
star
5

quickserv

Dangerously user-friendly web server for quick prototyping and hackathons
Go
322
star
6

poker-chipper

Optimally allocate poker chips using constrained, nonlinear optimization
Svelte
172
star
7

just.sh

Compile Justfiles to portable shell scripts
Python
129
star
8

hackernews-button

Privacy-preserving Firefox extension linking to Hacker News discussion; built with Bloom filters and WebAssembly
C
84
star
9

ctf-collab

Collaborative programming environment inside GitHub Actions – like Google Docs for hacking
Shell
69
star
10

panopto-download

Script to facilitate batch downloading of lecture videos from Panopto
Python
43
star
11

homework-template

Typeset assignments and problem sets using LaTeX; typographically optimized for online submission
TeX
32
star
12

procrastinate

One button, infinite web comics. Never focus again.
JavaScript
11
star
13

quickserv-examples

Example applications to run with QuickServ
C
9
star
14

jstrieb

Jacob Strieb GitHub profile README including automatically-generated profile statistics
6
star
15

webash

A cursed bash web application that makes more cursed bash web applications
Shell
6
star
16

groupme-latex

GroupMe bot to render LaTeX equations and send them as images
Python
6
star
17

remote-ofrak

Run OFRAK remotely to modify and repack binaries from your browser
5
star
18

bruteforce-link-lock

Brute force protected Link Lock URLs in parallel on the CPU
Go
5
star
19

dotfiles

Linux dotfiles and setup script
Shell
2
star
20

zoom-download

Browser extension to download recorded Zoom videos
JavaScript
2
star
21

killfam

Pure Go implementation of cross-platform process tree killing
Go
2
star
22

groupme-archiver

GUI to download GroupMe chats for archival and offline analysis
Java
1
star
23

brainfuck

A Linux brainfuck interpreter written in x86-64 Assembly
Assembly
1
star
24

rightclick-pdf

Firefox extension to add a "Save as PDF" button to the right-click context menu
JavaScript
1
star