Source: https://engineering.purdue.edu/~ee565/project/sscalar_hack_guide.pdf