Known errors in the books

classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

Known errors in the books

Shimon Schocken
Administrator
This post was updated on .
Page 129, Figure 7.4: the rightmost and topmost arrow should read "lt" and not "it".

Page 138, Figure 7.10:the VM code contains "/* */" comments while the VM specifications only allow "//" comments.

Page 140, Figure 7.11: the VM code contains "/* */" comments while the VM specifications only allow "//" comments.

Page 14, bottom table: the RAM addresses range for the heap should be 2048-16383.

Page 220, bottom: the double quotes character (") is listed as a symbol that should be output in a special way while in actuality the need to output it into the XML file should not arise.

Page 231, bottom: RPN is an acronym for "Reverse Polish Notation", unlike what is written.
Reply | Threaded
Open this post in threaded view
|

Subjective Errata List

Warren Toomey
This post was updated on .
Here is my list of errata after reading up to Chapter 8. Most are insignificant typos. Some are my personal taste, and as such are very much open to debate. Above all, I want to congratulate Noam and Shimon on a lucid and easily understood book, one I wish I could have written!

Preface pg xiv: esti romen -> Esti Romen ??

Introduction pg 2. The result of this elaborate translation process, known as
        compilation, will be yet another text file, containing
        machine language.

        It could be argued that most compilers produce binary files, not
        text files. I know that the Jack compiler produces a text file,
        but this is a conceptual section, not a Jack-specific section.

Chapter 1 pg 22 1st para. we can encapsulate the gates array -> gate's array

Chapter 2 pg 35. The Inc16 figure has no caption.

Chapter 3 pg 41 3rd para. The next two section describe the chips -> chips'
        (as the chips own the Specification and Implementation)

Chapter 3 pg 48 para 1. This conduction operation effects -> affects

        [Just a general comment. The verb "effects" is used a lot in the
         book, and many English readers confuse this with "affects". Perhaps
         some could be changed to an alternative, e.g. "performs".]

Chapter 4 pg 59 para 5. the operation code 1010 will be represented by the
        mnemonic add -> ADD, as you have used ADD lower down, and on pg 60.

Chapter 4 pg 72 para 3. It is called "pseudo-command"... -> It is called a
        "pseudo-command"...

Chapter 6 pg 108. Same missing "a" as in Chapter 4 pg 72 para 3.

Chapter 7 pg 130 para 3. The VM represents true and false as -1 (minus one,
        0xFFFF) and 0 (zero, 0x0000) respectively.

        I found the wording here a bit confusing, and would suggest this
        rewording: The VM represents true as -1 (minus one, 0xFFFF), and
        false as 0 (zero, 0x0000).

Chapter 7 pg 132 after Figure 7.7. Where -> where, as where is not starting
        the sentence but continuing the one from pg 131.

Chapter 7 pg 136 Fig 7.9. In the third column, why do Eq, Add and Sub start
        with uppercase letters. Should they not be lowercase as shown in
        Figure 7.5?

Chapter 7 pg 141 RAM addresses table. 2048-16483 -> 2048-16383.

Chapter 8 pg 156 para 3. Everything else is exactly the same: Both -> both,
        as "Both" is not the start of a sentence.

Chapter 8 pg 158 para 2. Instead, a return command should be interpreted as
        follows: Redirect -> redirect, same reason as the last comment.

Chapter 8 pg 159 para 1. In other words, the return address can also be
        placed in the caller's frame -> callee's frame??

        Surely the callee is the one who must return, and so therefore the
        return address must be in the calle's frame?

Chapter 8 pg 160, function views. Can you clarify why "Before returning, the
        called function must push a value onto the stack" and "After the
        called function returns ... a return value (that always exists)
        appears at the top of the stack". I'm assuming that this is an
        arbitrary design decision, but it only appears in this table. Perhaps
        some rationale for the design decision could be given elsewhere.

Chapter 8 pg 162 Figure 8.4. Question: does this figure define the contents
        of a frame, i.e. does the called function "own" all of the data
        shown in the figure?

        An explicit definition of the contents of a frame needs to be given,
        referring to Fig 8.4 (or Fig 8.4 referring to the definition).
Reply | Threaded
Open this post in threaded view
|

Re: Subjective Errata List

Shimon Schocken
Administrator
Thx much for the excellent list.  We will address them in the next printing of the book.  -- Shimon
Reply | Threaded
Open this post in threaded view
|

Re: Subjective Errata List

Drew
Sorry replying to old post,

I am just wondering if these corrections have been made if I was to purchase a book from Amazon now?
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

Rather Iffy
In reply to this post by Shimon Schocken
Page 251, in API Compilation engine , CompileSubroutine should be CompileSubroutineDec
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

cadet1620
Administrator
Rather Iffy wrote
Page 251, in API Compilation engine , CompileSubroutine should be CompileSubroutineDec
(Page 215)

CompileSubroutine processes the entire subroutine definition, not just its declaration. It parses the entire subroutine and calls CompileXxx routines to handle what it finds. I'm wondering what would be considered the subroutine declaration in Jack since it doesn't have forward/extern declaration concepts. Just the constructor/function/method line?

--Mark
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

Rather Iffy
This post was updated on .
In the complete grammar of the Jack language at page 208 the syntactical category " SubroutineDec" is used for specifying a complete subroutine , including the subroutine body.
In the compilation engine 's API i discern a certain pattern that the name of the syntactical category returns as part of the name of the requested routine.
So i thought it was consistent to name the routine "compileSubroutineDec".

To be honest i do not know what declaration of a Jack subroutine could mean.
Declarations indicate which resources and how many will be needed by the running program.
I do not have a clue which resources , besides the call stack, would be needed to run a subroutine.

But then, what about "subroutineDec" in the grammar ?    (;- )

Postscript

After giving it some more thought i now think the following.
The first line of a method containing the signature of the "to be defined" function could indeed be called the declaration of the function when it would be the case that there will spring an object of type function into existence and preparations therefore should be started.
This could indeed be called announcing something : there soon will be an function object, prepare for it and wait for the exact definition of the function (=code to run) .

I would have to work further on the implementation of the Jack language on the VM to see how methods can be implemented to see if the above conjecture is true for Jack. I just finished the Jackanalyzer emitting xml , so i soon hope to find out.
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

Rather Iffy
In reply to this post by Shimon Schocken
Pag 129 , line 1 :  " //if (x<7) or (y=8)' should be "//(x<7) or (y=8)"

Maybe a little too pedantic !?.
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

Rather Iffy
This post was updated on .
In reply to this post by Shimon Schocken
Page 228 :
"Different languages have different means to carry out this pointer arithmetic, and figure 11.2 shows two possibilities"  is not true.
Figure 11.2 shows the same arithmetic twice:  first in pseudo-VM code and then again in VM code.
 
Postscript
Sorry, my statement is not correct.
I thought that because the 2 languages used in the example are so similar one could not seriously speak about  them having different means of expressing the pointer arithmetic.
 
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

Rather Iffy
In reply to this post by Shimon Schocken
Page 258, Figure 12.a overshooting case, when the angle of the diagonal from (x,y) to (x+dx,y+dy) is labeled 'dy/dx' then to be consistent the other angle should be labeled 'b/a' , not 'a/b' . Idem for the undershooting case.
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

social_loser
Rather Iffy wrote
Page 258, Figure 12.a overshooting case, when the angle of the diagonal from (x,y) to (x+dx,y+dy) is labeled 'dy/dx' then to be consistent the other angle should be labeled 'b/a' , not 'a/b' . Idem for the undershooting case.
you mean in "12.8a", a/b should be change to b/a, right ?
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

mhmdghfr
In reply to this post by Shimon Schocken
Chapter 1, Page 24 (Page 18 on the PDF), the last word on the line under the title Multi-Way/Multi-Bit Demultiplexor should read demultiplexor: "A 4-way 1-bit demultiplexor and an 8-way 1-bit multiplexor"
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

cadet1620
Administrator
The text is correct in my version of the book, MIT Press paperback, 2008, 1ed, 4th printing.
The online PDF does have this typo.

--Mark
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

Rather Iffy
In reply to this post by social_loser
Yes.

--Chrit
Reply | Threaded
Open this post in threaded view
|

Re: Known errors in the books

foretopman
In reply to this post by Shimon Schocken
Is there a typo in Figure 11.6 on page 237? The second to the last line in the "Final VM Code" says "push 0". Should that be "push constant 0"?