Source: https://ee.usc.edu/~redekopp/cs356/slides/CS356Unit5_x86_Control