on section 6.1 on TECS:
Three comments are in order here. First, note that the variable allocation assumption implies that the largest program that we can run is 1,024 instructions
long. Since realistic programs (like the operating system) are obviously much larger,
the base address for storing variables will normally be much farther.
if i correctlly understand, the program code resides on the ROM16K while the variables are stored on the RAM address range. so why should be aqny adress range restriction on the code size?
Section 6.1 Background is a description of the concept, rather than the actual Hack specification. This section describes mnemonic-to-bits translation of assembly language in general. To illustrate symbol resolution, the author is asking you to pretend that commands will get stored in addresses 0 - 1023 and variables stored in address 1024 on up. This is completely arbitrary, and is used only to express how code with symbols can be resolved (figure 6.1).