Question: In the description of the Hack machine language in chapter 4, it is stated that in well-written programs a C-instruction that may cause a jump
In the description of the Hack machine language in chapter 4, it is stated that in well-written programs a C-instruction that may cause a jump should not contain a reference to M, and vice versa. Discuss why this should be avoided.
From The Elements of Computing Systems PAGE 69 nand2tetris.org/chapters/chapter%2004.pdf

69 Machine Language 2 | Effect No jump If out > 0 jump If 0111 0 jump If out 2 0 jump If out 0) null JGT 0 JGE JLT JLE JMP Figure 4.5 The jump field of the C-instruction. Out refers to the ALU output (resulting from the instruction's comp part), and jump implies "continue execution with the instruction addressed by the A register The last instruction (0;JMP) effects an unconditional jump. Since the C-instruction syntax requires that we always effect some computation, we instruct the ALU to compute 0 (an arbitrary choice), which is ignored. Conflicting Uses of the A Register As was just illustrated, the programmer can use the A register to select either a data memory location for a subsequent C-instruction involving M, or an instruction memory location for a subsequent C-instruction involving a jump. Thus, to prevent conflicting use of the A register, in well-written programs a C-instruction that may cause a jump (i.e., with some non-zero bits) should not contain a reference to M, and vice versa
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
