https://gitlab.com/nelds/estudos/compiladores/nand2tetris/nand2tetris-notes/-/raw/main/slides/chapter06_lecture.pdf