Source: https://www.cs.princeton.edu/courses/archive/fall20/cos318/precepts/x86_assembly_tutorial.pdf