title: Visual X-TOY Machine (Princeton) - Meaning of second column
body: <p>Princeton University's Visual X-TOY Machine Simulator-
  <a href="http://introcs.cs.princeton.edu/xtoy/" rel="nofollow">Download link</a> - 
  <a href="http://www.cs.princeton.edu/courses/archive/fall09/cos126/lectures/09ToyIntro-2x2.pdf" rel="nofollow">Document</a></p>
  
  <p>Multiply example:</p>
  
  <pre><code>program Multiply with stdin/stdout
  // Input:    integers a and b
  // Output:   integer c = a * b
  // Remarks:  inefficient
  // -----------------------------------------------------------------------------
  10: 8AFF   read R[A]                     
  11: 8BFF   read R[B]                     
  
  12: 7C00   R[C] &lt;- 0000                  
  13: 7101   R[1] &lt;- 0001                  
  
  14: CA18   if (R[A] == 0) goto 18        while (a != 0) {
  15: 1CCB   R[C] &lt;- R[C] + R[B]              c += b
  16: 2AA1   R[A] &lt;- R[A] - R[1]              a--
  17: C014   goto 14                       }
  
  18: 9CFF   write R[C]                    
  19: 0000   halt                          
  </code></pre>
  
  <p>What is the <strong>meaning</strong> or <strong>function</strong> of <strong>second column</strong>(<em>Four digit hexadecimal</em> like <strong>CA18</strong>)? For example, how can I add a new line with this <strong>Language Reference</strong>:</p>
  
  <pre><code>INSTRUCTION FORMATS
  
               | .... | .... | .... | .... |
    Format 1:  |  op  |  d   |  s   |  t   |
    Format 2:  |  op  |  d   |     imm     |
  
  
  ARITHMETIC and LOGICAL operations
      1: add            R[d] &lt;- R[s] + R[t]
      2: subtract       R[d] &lt;- R[s] - R[t]
      3: and            R[d] &lt;- R[s] &amp; R[t]
      4: xor            R[d] &lt;- R[s] ^ R[t]
      5: shift left     R[d] &lt;- R[s] &lt;&lt; R[t]
      6: shift right    R[d] &lt;- R[s] &gt;&gt; R[t]
  
  TRANSFER between registers and memory
      7: load immediate R[d] &lt;- imm
      8: load           R[d] &lt;- mem[imm]
      9: store          mem[imm] &lt;- R[d]
      A: load indirect  R[d] &lt;- mem[R[t]]
      B: store indirect mem[R[t]] &lt;- R[d]
  
  CONTROL
      0: halt           halt
      C: branch zero    if (R[d] == 0) pc &lt;- imm
      D: branch pos.    if (R[d] &gt; 0) pc &lt;- imm
      E: jump register  pc &lt;- R[d]
      F: jump and link  R[d] &lt;- pc; pc &lt;- imm
  
  
  R[0] always reads 0.
  Loads from mem[FF] come from stdin.
  Stores to mem[FF] go to stdout.
  </code></pre>
  
  <p>I think it's pointing at memory cells. But according to what? How can I determine these values?</p>