Robert G. Plantz
ARM Edition
The ARM Edition is only available online. I will make corrections there, but I will also keep a running list of corrections here to help you make sure that you learn about them.
- 2024-02-26
- In Figure 7.3.16 and Table 7.3.17, the entry for K in the last row in both tables has been changed from `0` to `1`. (Thanks to Ethan Shea.)
- 2023-09-12
- Section 16.4 has an error in my explanation of the number of values in the four decimal digit floating-point example. The sign digit has only two values, and +0 and -0 exponents yield the same value. So the number of values is 2 x 10^3 - 10 = 1990 (Thanks to Kamen Lozev.)
- 2021-11-08
- Listing 12.1.3, error in my comments. The comment on the line after `.L3` has been changed to "one byte", and the comment on the third line after `.L3` has been changed to "STDOUT_FILENO". (Thanks to Jeffrey Stephens.)
- 2021-11-06
- Listing 11.2.3 has an error. I only subtracted 12 from the
pc
to make room for saving 4 registers. The correct value is 16, and don't forget to add 16 in the epilogue. Also, I've saved registers in a bad order. And my comments about the program do not match the listing. I'll wait until the holiday break to fix this online to avoid possibly disrupting a class. Meanwhile, you can get a PDF copy of the corrected page here. (Thanks to Jeffrey Stephens.)
- Listing 11.2.3 has an error. I only subtracted 12 from the
- 2021-06-15
- Section 2.7, third from last paragraph, corrected "grade grade example" to be "course grade example". (Thanks to Henry O'Mara.)
- Section 2.13, sixth paragraph, corrected "transmitted in each characters" to be "transmitted in each character". (Thanks to Henry O'Mara.)
- Section 2.15, fifth paragraph after Listing 2.15.2, corrected "shell prompt,
bob $
" to be "shell prompt,pi@rpi3:~/chp02 $
". (Thanks to Henry O'Mara.) - Section 3.3, second paragraph, corrected "(shown both in binary and hex here)" to be "(shown both in binary and decimal here)". (Thanks to Henry O'Mara.)
- Section 3.3, third paragraph, corrected "two larger integer" to be "two larger integers". (Thanks to Henry O'Mara.)
- Section 6.3, second paragraph, NAND explanation, corrected "otherwise the result is 0" to be "otherwise the result is 1". (Thanks to Henry O'Mara.)
- Section 7.1.1, Equation 7.1.3, corrected "x" to be "xi". (Thanks to Henry O'Mara.)
- Section 7.3.2, first paragraph after Figure 7.3.4, corrected "S' = 0, R' = 0: Not allowed" to be "S' = 1, R' = 1: Not allowed". (Thanks to Henry O'Mara.)
- Section 8.3, last paragraph, corrected "state of us states" to be "state or states". (Thanks to Henry O'Mara.)
- Section 15.1, last paragraph, corrected "storing this value a register" to be "storing this value in a register". (Thanks to Henry O'Mara.)
- Section 17.3, third paragraph, corrected "
0x00000018
e is loaded into the pc" to be "0x00000018
is loaded into the pc". (Thanks to Henry O'Mara.)
- 2020-10-27
- Example at end of Section 2.5, corrected the decimal value to be 143655765. (Thanks to Jacinto Quimua.)
- 2020-10-27
- Section 10.2, first sentence, corrected "a functions" to be "a function." (Thanks to Maciej Górny.)
- 2020-08-11
- Exercise 3.2.4, corrected solution, "7f16" to "6f16". (Thanks to Jeffrey Stephens.)
- 2020-08-02
- Figure 15.3.3 was not consistent with the code, now fixed. (Thanks to Mark Gondree.)
- 2020-06-28
- In RPi4 gpio in the menu on the left, in the
periphAddr.c
listing, "<<bcm_host.h>
" s/b "<bcm_host.h>
" (Thanks to Kryno Bosman.)
- In RPi4 gpio in the menu on the left, in the
- 2019-12-08
- Section 9.2.5, changed "This makes it easier to user longer labels" to "This makes it easier to use longer labels". (Thanks to Peter Dobratz.)
- 2018-10-19: In case you looked here between about 13:45 and 14:30 PDT, you saw an entry that was intended for the x86_64 book. It did not apply here. Sorry about that.
- 2018-09-12
- Fixed the values of S and R in the first bullet point below Figure 7.3.2. (Thanks to Joel Hollingsworth.)
- 2018-08-25
- Rewrote Section 6.2 to (hopefully) clarify the presentation. (Thanks to Zheyuan Chen for pointing out the need to rewrite it, and to Mike Lyle for his very helpful suggestions.)
- 2018-06-22
- About a dozen issues have been corrected, as noted at github.com/justinhester/IntroCompOrg-RPi/issues. (Thanks to Justin Hester.)
- 2018-05-22
- Section 9.2.1: Corrected "...immediate values in the my examples..." to be "..immediate values in my examples...". (Thanks to Joshua Barnard.)
- 2018-04-06
- Section 2.15, a bit below Listing 2.15.1: Corrected STDOUT_FILENO to be 1 and STDIN_FILENO to be 0. (Thanks to Robert Ritter.)
- 2018-02-21
- Section 7.1.3, definition of Decoder: Corrected "outpurs" to be "outputs." (Thanks to Donald Barrett.)
- Section 7.3.2, just below Figure 7.3.4: Corrected "Keep current state" to be S' = 1, R' = 1. (Thanks to Joshua Barnard.)
- 2018-02-12
- Figure 6.2.5: Corrected the last value in the 'A' column in the table to be '0'. (Thanks to Fred Straub.)
- 2018-02-02
- Exercise 2.4.4.g: Changed the answer to be the correct one, 31658. (Thanks to Nicolas Provencal.)
- 2018-02-01
- Exercise 2.4.4.b: Changed
0001 0011 0011 0100
to0001 0010 0011 0100
to be consistent with answer. (Thanks to Edwin Espinoza.)
- Exercise 2.4.4.b: Changed
- 2018-01-10
- Exercise 3.2.6: Changed "adding fixed-width integers" to "subtracting fixed-width integers" to be consistent with answer. (Thanks to Daniel Gilbert.)
- 2017-12-04
- Exercise 2.4.4.a: Changed "
1010 1011 1110 1101
" to "1010 1011 1100 1101
" to be consistent with answer. (Thanks to Tomas Muñoz.)
- Exercise 2.4.4.a: Changed "
- 2017-11-26
- Section 9.5.1: Rewrote the paragraph beginning "The
add
instruction adds 4..." to (hopefully) clarify what the frame pointer is pointing to on the stack. (Thanks to Will Lamers.)
- Section 9.5.1: Rewrote the paragraph beginning "The
- 2017-11-23
- Section 10.3, third paragraph: Corrected "...we have and algorithm..." to "...we have an algorithm..."). (Thanks to Will Lamers.)
- 2017-11-22
- Section 1.1, third paragraph: Corrected "...copy and past..." to "...copy and paste..."). (Thanks to Robert Thille.)
- 2017-11-20
- Answer to Exercise 2.6.1 corrected to 1111011 = 7b. (Thanks to Dan Caspi.)
- Exercise 2.6.2.b corrected to 125. (Thanks to Dan Caspi.)
- 2017-11-18
- Removed a duplicate sentence from the next-to-last paragraph in Section 1.2. (Thanks to Scott Crawford.)
- Changed "...book is study..." to "...book is to study..." in last paragraph in Section 1.2. (Thanks to Scott Crawford.)
- 2017-09-30
- The book has been updated to reflect changes in the latest version of Raspbian (version 9, Stretch). I also made the following changes:
- Use add/subtract and direct store/load for saving values on the stack. This adds clarity to stack usage and provides a better segue to AARCH64 when that is implemented.
- Now use the ISO 8602 date format.
- The book has been updated to reflect changes in the latest version of Raspbian (version 9, Stretch). I also made the following changes:
- 28 September 2017
- I continue to update the book to reflect changes in the latest version of Raspbian (version 9, Stretch). Thus far, I have completed this process through Chapter 16.
- 16 September 2017
- I continue to update the book to reflect changes in the latest version of Raspbian (version 9, Stretch). Thus far, I have completed this process through Chapter 8.
- 10 September 2017
- Modified the first part of Section 1.4 to reflect changes in the latest version of Raspbian (version 9, Stretch).
- 7 September 2017
- I made some cosmetic changes. Several footnotes have been changed to asides, which are implemented in a cool way in PreTeXt.
- 21 August 2017
- I made many changes in the book to match changes in the authoring package, PreTeXt (which was called MathBook XML). The changes are essentially cosmetic, barely any changes in content, except fixing typos and other errors.
- 16 April 2017
- Corrected some typos in first two chapters. Fixed some notation in Section 2.3.
- 17 February 2017
- Added Figure 2.9.1, a circuit diagram for the blinking LED program, to Section 2.9.
- 16 February 2017
- Moved GPIO access using C from Chapter 19 to Chapter 2.
- 9 February 2017
- I updated all the files. There are very few content changes, but some formatting may be changed due to the evolution of MathBook XML. There are several changes in Chapter 19, but note that I am currently working on the chapter. Please stay tuned for a stable version of Chapter 19, hopefully within the next week or two.
- 19 November 2016
- Updated the Preface to more accurately state the goals of the book.
- 18 November 2016
- 15.3.1 Exercises: Changed getChar.s to be consistent with other assembly language solutions in book. 15.4.1 Exercises: Added the putChar.s file. (Thanks to Nicholas Giaccio.)
- 17 November 2016
- 15.4.1 Exercises: Changed "fraction_struct.s" to "fractionObject.s". (Thanks to Nicholas Giaccio.)
- 15 November 2016
- Section 16.3, definition of "Cancellation" changed to "Subtraction of two numbers differing only in their few least significant digits gives a result that has few significant digits." (Thanks to Mike Lyle.)
- 5 November 2016
- Section 14.2, solution to Exercise 4 (
addHex.s
): ".equ inString2,-17 @ for 1st input string
" s/b ".equ inString2,-17 @ for 2nd input string
" ".asciz "There sum is: "
" s/b ".asciz "Their sum is: "
" (Thanks to Andre Judson.)
- Section 14.2, solution to Exercise 4 (
- 19 October 2016
- Added Section 7.5, “Memory Organization”.
- 16 October 2016
- Added
mls
instruction to Section 14.4 for computingmod
.
- Added
- 22 September 2016
- Added link to my home page (my photo, upper,left) to each page, making it easier to get to this errata.
- 22 September 2016
- Updated some formatting in Chapters 10 – 17, 19. Moved descriptions of
ldrb
andstrb
from Section 12.1.4 to Section 12.2.1 and fixed them.
- Updated some formatting in Chapters 10 – 17, 19. Moved descriptions of
- 18 September 2016
- Section 9.1, near bottom:
changed to.globl
(Thanks to Joe Burnett.).global
.
- Section 9.1, near bottom:
- 14 September 2016
- Added the Appendix on using
make
. Also more formatting updates.
- Added the Appendix on using
- 12 September 2016
- Made some formatting changes in Chapters 1 - 7. Content was not changed, but there are some textual modifications consistent with the newer formatting.
- 8 September 2016
- Section 1.4, about the middle of the page. "...where the program is locates." changed to "...where the program is located." (Thanks to Jason Underdown.)
- 7 September 2016
- Section 1.2: Figure 1.2.1 was incorrect, has been corrected.
- 2 September 2016
- Answer to #2 in Exercises 2.4.1:
"00102b: 1d" s/b "00102a: 1c" "00102c: 1e" s/b "00102b: 1d"
- Answer to #2 in Exercises 2.4.1:
- 27 August 2016
- Section 2.4: "ost of the data..." s/b "Most of the data..." (Thanks to Wayde Jaskela.)
x86-64 Edition
Errata for August 2019 version
- From Chapter 7 on: The default for the gcc compiler has been changed since this book was published. It now generates Position Independent Executables (PIE). To make things match the examples in the book:
- Use the
-fno-pie
option when you usegcc
to generate assembly language files. - Use the
-no-pie
option when you usegcc
to link your object (.o
) files.
- Use the
- 3 Feb. 2021, Section 5.2.2, p. 102
- Figure 5.13: "Eight-byte Read Only Memory" s/b "Four-byte Read Only Memory". (Thanks to Eduardo Todt.)
- 3 Dec. 2020, p. 331
- Just below Listing 13.4: Delete the sentence "Since this function...in the red zone." In fact, the function does allocate a stack frame, and the array is stored in that stack frame. I was mistaken. (Thanks to David Topham.)
- 13 Nov. 2020, p. 188 and p. 264
- Error near top of p. 188:
"...like we did when accessing memory in the
.data
segment." s/b "...like we did when accessing memory in the.rodata
section (which gets loaded into the Linux text segment when the program is run)." (Thanks to David Topham.) - Error in Exercises 10-4, 10-5, and 10-6, p. 264:
"Use only one byte in the
.data
segment..." s/b "Use only one byte in the stack frame..." (Thanks to David Topham.)
- Error near top of p. 188:
"...like we did when accessing memory in the
- 9 Jul. 2020, p. 437
- Near bottom of p. 437, Exercise 2-16:
"
00000007: 08
" s/b "00000007: 07
" (Thanks to Mihailo Milivojevic.)
- Near bottom of p. 437, Exercise 2-16:
"
- 13 Feb. 2020, p. 45, p. 217
- Near top of p. 45, Number 1: "Adding two negative numbers cannot yield a negative sum" s/b "Adding two negative numbers cannot yield a positive sum" (Thanks to Christoph Adam.)
- Near top of p. 217, Section 9.2:
"
subl %eax, %r8w
" s/b "subl %eax, %r8d
" (Thanks to Suporn Chenhansa.) - Near top of p. 217, Section 9.2:
"
r8: 2222 4444 8888 bbbc
" s/b "r8: 0000 0000 8888 bbbc
" (Thanks to Suporn Chenhansa.)
- 31 Oct. 2019, p. 215, p. 217
- Near bottom of p. 215, Section 9.2:
"
r8: 2222 4444 4444 5554
" s/b "r8: 0000 0000 4444 5554
" (Thanks to Suporn Chenhansa.) - Near top of p. 217, Section 9.2:
"
subl %eax, %r8w
" s/b "subl %eax, %r8d
" (Thanks to Suporn Chenhansa.) - Near top of p. 217, Section 9.2:
"
r8: 2222 4444 8888 bbbc
" s/b "r8: 0000 0000 8888 bbbc
" (Thanks to Suporn Chenhansa.)
- Near bottom of p. 215, Section 9.2:
"
- 21 Oct. 2019, p. 151, p. 168
- Bottom of p. 151, Section 7.2, item 2(a): "...from one to five bytes..." s/b "...one or more bytes..." (Thanks to David Topham.)
- Bottom of p. 168, 7.5.1: The
push
andpop
instructions will operate on the number of bytes set by the operating system. In 64-bit mode, the only legal instructions arepushq
andpopq
. In 32-bit mode you need to usepushl
andpopl
. (Thanks to David Topham.)
- 11 Sept. 2019, p. 34
- Bottom of p. 34, just before Algorithm 3.4, add:
"Note that subtraction is the inverse of addition, and borrow is the inverse of carry. The computer uses the carry flag,
CF
, for both carry and borrow." (Thanks to David Topham.)
- Bottom of p. 34, just before Algorithm 3.4, add:
"Note that subtraction is the inverse of addition, and borrow is the inverse of carry. The computer uses the carry flag,
- 5 Sept. 2019, p. 31
- p. 31, Example 3-a:
"...y =
11001101
." s/b "...y =01001101
." (Thanks to Suporn Chenhansa.)
- p. 31, Example 3-a:
"...y =
Errata for August 2015 version
- From Chapter 7 on: The default for the gcc compiler has been changed since this book was published. It now generates Position Independent Executables (PIE). To make things match the examples in the book:
- Use the
-fno-pie
option when you usegcc
to generate assembly language files. - Use the
-no-pie
option when you usegcc
to link your object (.o
) files.
- Use the
- 2019-05-18
- Page 373, Table 14.5, page 378, top table, and page 392, bottom table: The source for the
fld
s instruction should be memfloat. (Thanks to David Topham.)
- Page 373, Table 14.5, page 378, top table, and page 392, bottom table: The source for the
- 2019-05-16
- Page 378, near middle, and page 392, bottom: Below x87 floating point table, "s = b, w, l, q; w = l, q" s/b "s = s, l, t". (Thanks to a student of David Topham.)
- 2018-11-30
- Near the end of Section 12.4, Page 321: In intToUDec.s, line 39 "
cvltd
" s/b "cltd
". (Thanks to Christopher Vong.)
- Near the end of Section 12.4, Page 321: In intToUDec.s, line 39 "
- 2018-11-29
- Near the end of Section 10.1, Page 248, middle of page, just below "
cmpb $0, %esi
": "...in theeax
register..." s/b "...in theesi
register...", in two places. (Thanks to David Topham.)
- Near the end of Section 10.1, Page 248, middle of page, just below "
- 2018-11-07
- Section 9.2, Page 215, near top of page: "
addl %eax, %r8w
" s/b "addl %eax, %r8d
". (Thanks to David Topham.)
- Section 9.2, Page 215, near top of page: "
- 2018-10-19
- From Chapter 7 on: The default for the gcc compiler has been changed since this book was published. It now generates Position Independent Executables (PIE). To make things match the examples in the book:
- Use the -fno-pie option when you use gcc to generate assembly language files.
- Use the -no-pie option when you use gcc to link your object (.o) files.
- From Chapter 7 on: The default for the gcc compiler has been changed since this book was published. It now generates Position Independent Executables (PIE). To make things match the examples in the book:
- 2018-10-17
- Page 211: "Compare this to Listing 7.4..." s/b "Compare the prologue with that of the null program in Listing 7.4...". (Thanks to David Topham.)
- Page 211: The following lines of code should also include lines 11 and 12 from Listing 9.2. (Thanks to David Topham.)
- Page 211: "of this function is the same" s/b "of this function includes saving the contents of a register and an adjustment to keep the stack pointer aligned on a sixteen-byte boundary." (Thanks to David Topham.)
- Page 211: "Both are correct, just different ways to do the same thing." s/b "In the epilogue, we need to restore the stack pointer and restore any registers we saved on the stack, before restoring the calling function's base pointer." (Thanks to David Topham.)
- 2018-09-19
- Online version: Figure 6.5 was incorrect, now corrected. (It is correct in the PDF and paperback version.) (Thanks to David Topham.)
- 2018-09-09
- p. 35, Example 3-c: The use of "borrows" is confusing. "Position of intermediate borrows" would probably be less confusing. (Thanks to David Topham.)
- You can also see a slightly different way of doing this from my Raspberry Pi book here.
- 2018-09-01
- p. 47, Examples 3-h, 3-j, and 3-k: "...did not pass the tic mark..." should be "...did not reach the tic mark..." (Thanks to David Topham.)
- p. 47, Example 3-i: "...have crossed the tic mark..." should be "...reached the tic mark..." (Thanks to David Topham.)
- p. 48, Example 3-l: "...did pass the tic mark..." should be "...reached the tic mark..." (Thanks to David Topham.)
- p. 53, Section 3.5.3, second paragraph: Replace the sentence, "Notice that...or lower case." with "This table shows only the lower-case alphabetic digits, but you saw in Table 2.3 that the low-order four bits are the same for both upper- and lower-case alphabetic characters." (Thanks to David Topham.)
- p. 59, Exercise 3-13: "Figure 3.1" should be "Listing 3.1". (Thanks to David Topham.)
- 2018-07-27
- p. 97, Table 5.2 has several errors. Please replace it with pg_97.pdf. (The new page 97 includes the first few lines of text from the old page 98.) (Thanks to Razvan A. Mezei.)
- 2017-12-04
- p. 214, about middle of page: "...adds the 32-bit value in the dx register to the 32-bit value..." s/b "...adds the 16-bit value in the dx register to the 16-bit value..." (Thanks to Oleksandr Gituliar.)
Errata for May 2015 version
- 13 July 2016
- p. 361, about 2/3 down the page: "8.9372 x 10-5" s/b "-8.9372 x 10-5"
- 27 June 2016
- p. 43, Case 1: In the computation, the high-order bit of x should be 1 and the high order bit of y should be 0. (Thanks to Neil Penven.)
- p. 62, insert after the sentence "Two-state variables...statements": "The order of operator precedence in a Boolean expression is: NOT is evaluated first, followed by AND, and then OR. Expressions within parentheses are evaluated first, following the same operator precedence within each set of parentheses." (Thanks to Neil Penven.)
- p. 70, Example 4-a, last line: "F(x, y, z)" s/b "F(w, x, y, z)" (Thanks to Neil Penven.)
- p. 75, replace items 1 and 2 near top of page with:
- Place a 0 in each cell that corresponds to a maxterm that evaluates to 0 in the experession.
- Combine cells with 0s in them and that share edges into the largest possible groups. Larger groups result in simpler expressions. The number of cells in a group must be a power of 2. The edges of the Karnaugh map are considered to wrap around to the other side, both vertically and horizontally.
- p. 76, caption of Figure 4.14: "...minterms...)" s/b "...maxterms..."
- p. 85, end of first full paragraph: "...thus taking larger..." s/b "...thus taking longer..." (Thanks to Neil Penven.)
- p. 108, near bottom of page: "...of both NOR gates..." s/b "...of both NAND gates..." (Thanks to Neil Penven.)
- p. 214, about 1/4 down from top of page: "addl %eax, %r8w" s/b "addl %eax, %r8d" (Thanks to Neil Penven.)
- p. 215, about middle of page: "...adds the 32-bit value in the dx register to the 32-bit value..." s/b "...adds the 16-bit value in the dx register to the 16-bit value..." (Thanks to Neil Penven.)
- p. 216, near bottom of page: "subl %eax, %r8w" s/b "subl %eax, %r8d" (Thanks to Neil Penven.)
- 22 June 2016
- p. 28, Exercise 2-18:
"...location
0x001000
." s/b "...location0x00001000
." (Thanks to Neil Penven.) - p. 31, Example 3-a:
"...y =
11001101
." s/b "...y =01001101
." (Thanks to Neil Penven.)
- p. 28, Exercise 2-18:
"...location
- 8 March 2016
- p. 114, step 2: "...log2 bits." s/b "...log2N bits."
- p. 115, just above and below Table 5.7: Delete "shows what values must be input to the D flip-flop."
- 7 March 2016
- p. 136, middle of page:
"the
al register in the CPU..." s/b "and theal register in the CPU..." (Thanks to David Tauraso.)
- p. 136, middle of page:
"the
Errata for May 2015 version
- 22 June 2015
- p. 40, Equation 3.9: "-116" s/b "-110"
Errata for December 2013 version
- 24 August 2014
- p. 8, Equation 2.4 should be 1 x 102 + 2 x 101 + 3 x 100 (Thanks to Brian Chu.)
- 22 March 2014
- There are nine occurrences of "cpu" not being capitalized, which is inconsistent with the rest of the text.
I list them here:
- pg. 154, item 3: "...register in the cpu." s/b "...register in the CPU."
- pg. 155, item 3: "...register in the cpu." s/b "...register in the CPU."
- pg. 155, item 3b: "...register in the cpu." s/b "...register in the CPU."
- pg. 155, item 2: "...register in the cpu." s/b "...register in the CPU."
- pg. 157, Section 7.2.2, first paragraph: "But most cpu...." s/b "But most CPU..."
- pg. 157, Section 7.2.2, first paragraph: "...for their cpu." s/b "...for their CPU."
- 157, Section 7.2.2, second paragraph: "...x86 cpus..." s/b "...x86 CPUs..."
- pg. 158: "...the cpu manufacturer..." s/b "...the CPU manufacturer..."
- pg. 191, near bottom of page: "...of a cpu register..." s/b "...of a CPU register..."
- Pg 9, Equation 2.8. "128+0+32+0+0+4+1+1 = 16510" s/b "128+0+32+0+0+4+1 = 16510" (Thanks to Zack Gold.)
- There are nine occurrences of "cpu" not being capitalized, which is inconsistent with the rest of the text.
I list them here:
- 11 March 2014
- Pg. 462 - 463, el.s, em.s, and en.s functions.
I have an inconsistency in specifying the character constants.
The correct syntax is "
'L
", "'M
", and "'N
". If you use a second single quote ("'L'
") the assembler ignores it and generates the correct machine code. If your editor uses syntax highlighting, it will probably misinterpret the (correct) single quote syntax (as can be seen in the pdf version of this book). (Thanks to Arthur Wuterich.)
- Pg. 462 - 463, el.s, em.s, and en.s functions.
I have an inconsistency in specifying the character constants.
The correct syntax is "
Errata for September 2012 version
- 21 December 2013
- * Pp. 399 - 420, Section 16.6.
Comments are missing from some of the listings, and some line numbers have changed due to my using a newer version of the compiler.
This has caused both the listings and the text to change.
You can download the new version of Section 16.6 here.
(Thanks to Jim O'Hara.)
- 4 December 2013
- * Pg. 388, Section 15.6.
"...causes the CPU to change the priority levels but does not use the stack nor goes through..." should be "...causes the CPU to change the priority levels but not use the stack nor go through..." (Thanks to Jim O'Hara.)
- * Pg. 396, Section 16.2.
"...100 milliseconds. between each character." should be "...100 milliseconds between each character." (Thanks to Jim O'Hara.)
- * Pg. 401, last paragraph.
"The memory addresses
0xff0000 - 0xff020
..." should be "The memory addresses 0xff000 - 0xff020
..." (Thanks to Jim O'Hara.)
- * Pg. 409, last paragraph.
"At the points were the macros..." should be "At the points where the macros..." (Thanks to Jim O'Hara.)
- * Pp. 402 - 404, Listing 16.2 is missing the added comments.
You can download the correct file here.
Since a newer compiler version was used, the line numbers have changed.
Thus on pages 404/405, "line 25 - 40" s/b "lines 66 - 95", "Lines 65 - 73" s/b "Lines 105 - 112".
Delete the sentence "The address of the receiver register...on line 75."
"...lines 89 - 97 in the charout..." s/b "...lines 128 - 135 in the charout...".
Delete the sentence "When it is ready...on line 101."
(Thanks to Jim O'Hara.)
- * Pg. 315, Section 12.4.
The description of signed division has been rewritten to (hopefully) clarify the issues.
You may download a copy here.
(Thanks to Jim O'Hara and Mike Lyle.)
- 19 November 2013
- * Pg. 247, bottom of page.
"...two instruction implement..." should be "...two instructions implement..." (Saw this one myself.)
- * Pg. 248, bottom of page.
Delete "...minus four bytes relative to the frame pointer." (Saw this one myself.)
- 16 November 2013
- * Pg. 328, just above Listing 13.2.
"...increased to the next multiple of sixteen, and 208 bytes..." should be "...increased to a multiple of sixteen, and 224 bytes...". Footnote: I do not know why the compiler allocated the additional 16 bytes (224 instead of 208). (Thanks to Jim O'Hara.)
- * Pg. 334, bottom of page.
"The next issue is access each..." should be "The next issue is how to access each...". (Thanks to Jim O'Hara.)
- * Pg. 341, line 13 in structPass2.s function (Listing 13.11).
".data" should be ".section .rodata" (Thanks to Mike Lyle.)
- 5 November 2013
- * Pg. 313, line 8 in Listing 12.9.
"returns 64-bit int..." should be "returns 32-bit int..." (Thanks to Mike Lyle.)
- 5 November 2013
- * Pg. 291, near top of page.
"
andb $0xee, %ah
" should be "andb $0xee, %al
" (Thanks to Jim O'Hara.)
- * Pg. 291, just above listing.
"...end up with
0x89bbccee
in eax
." should be "...end up with 0x99bbddff
in eax
." (Thanks to Jim O'Hara.)
- * Pg 308, sentence below Algorithm 12.2.
"...be powers of two." should be "...by powers of two." (Thanks to Jim O'Hara.)
- 29 October 2013
- * Pg. 279, Listing 11.6.
The code on lines 47 - 52 use registers unnecessarily.
You may download a better version of this function here. (Thanks to Jim O'Hara.)
- 14 October 2013
- * Pg. 259, Section 10.2.1.
"When connecting boolean tests with
the && and || operators, each the boolean tests is each performed." should be "When combining boolean tests with
the && and || logical operators, each of the boolean tests is executed one at a time from left to right." (Thanks to Jim O'Hara.)
- 8 October 2013
- * Pg. 172, Listing 8.2.
Add " # constant data" to the end of line 4. (Thanks to Jim O'Hara.)
- * Pg. 191, near end of first paragraph.
"this it the next..." should be "this is the next...". (Thanks to Jim O'Hara.)
- * Pg. 196, Listing 8.8, line 25.
"# more to..." should be "# move to...". (Thanks to Jim O'Hara.)
- 23 September 2013
- * Pg. 132, near bottom of page.
Delete "24mm". (Thanks to Jim O'Hara.)
- 21 September 2013
- * Pg. 111, near end of second paragraph.
"...more of less..." should be "...more or less...". (Thanks to Jim O'Hara.)
- 11 September 2013
- * Pg. 68, bottom.
"...to duplicate the second term:" should be "...to duplicate the third term (and rearrange a bit):". (Thanks to Jim O'Hara.)
- * Pg. 69, Figure 4.5.
"...in Equation 4.28" should be "...in Equation 4.26". (Thanks to Jim O'Hara.)
- * Pg. 69, Equations (4.27) and (4.28).
"F2(x,y,z) = ..." should be "F2(x,y) = ...". (Thanks to Jim O'Hara.)
- * Pg. 74, Example 4-d.
"F(x,y,z) = ..." should be "F(w,x,y,z) = ...". (Thanks to Jim O'Hara.)
- * Pg. 76, Example 4-e.
Delete "of Equation 4.26. That function is", and delete "which is the same as we found in Equation 4.28." (Thanks to Jim O'Hara.)
- * Pg. 456, Solution 4-15.
"(x'0 * y1)" should be "(x'1 * y1)" (Thanks to Jim O'Hara.)
- 1 September 2013
- * Pg. 41, Example 3-e, first equation.
"X4096 + X256 + 9 X 16 + 11 X 1" should be "7 X 4096 + 8 X 256 + 9 X 16 + 11 X 1". (Thanks to Jim O'Hara.)
- 13 April 2013
- * Pg. 315, just above Table 12.3.
Add "The instructions,
cwtd
, cltd
, and cqto
introduced at the top of page 246 are designed to help set up the d:a
register pair for division. (Thanks to Mike Lyle for pointing this out.)
- 13 March 2013
- * Pg. 27, Exercise 2-11 f).
"65635" should be "65535".
The answer (pg. 436) is correct, making this a "Jeopardy" question. ;-)
- * Pg. 39, Equation 3.9.
"f16" should be "ff16".
Errata for January 2012 version
- 21 February 2012
- * Pg. 128, Figure 6.4.
"...bussed" should be "...busses". (Thanks to Nick Morrill.)
- 3 January 2012 - release date
Errata for August 2011 version
- 19 November 2011
- * Pg. 157.
"Algorithms Algorithms" should be "Algorithms". (Thanks to Zack Gold.)
- 15 November 2011
- * Pp. 437-438.
Solutions are mislabled. (Thanks to Debra Thayer.)
- 4-8 s/b 4-9
- 4-9 s/b 4-10
- 4-10 s/b 4-11
- 4-14 s/b 4-15
- 22 October 2011
- * Pg. 34.
In the arithmetic example "sum" should be "difference".
- 18 October 2011
- * Pg. 160, top.
"as -gstabs -o doNothingProg.o doNothingProg.o" should be "as -gstabs -o doNothingProg.o doNothingProg.s". (Thanks to Zack Gold.)
- 11 October 2011
- * Pg. 31, typo.
"there is there is" should be "there is".
- 6 October 2011
- * Pg. 125, Table 6.3, typo.
"r24" should be "r14". (Thanks to Zack Gold.)
-
10 September 2011
- I apologize for the following two production problems:
- In the eBook version some spaces between words have been lost.
They show up visually but not if you copy and paste the text.
- In the print version all even-numbered pages seem to be numbered "preface."
- I would like to thank Zack Gold for providing me with the following list of typos in the book:
- * Pg xiv: Three occurrences of "Add 1 to user's'..." s/b "Add 1 to user's..."
- * Pg xiv: Three occurrences of "Add 1 to user's'..." s/b "Add 1 to user's..."
- * Pg xvi: "...essentially a synomym..." s/b "...essentially a synonym..."
- * Pg. 14: "...f for float, x for hexadecimal." s/b "...f for float, and x for hexadecimal."
- * Pg. 24, "...program behaviour." s/b "...program behavior."
- * Pg. 24, Exercise 205, "Refering..." s/b "Referring..."
- * Pg. 76, "...through a 1.0 kiloohm..." s/b "...through a 1.0 kilohm..."
- * Pg. 83: Two occurrences of "deMorgan" s/b "DeMorgan"
- * Pg. 85, Exercise 4-12: "verfy" s/b "verify"
- * Pg. 109: "...analyze it, then refine..." s/b "...analyze it, and then refine..."
- * Pg. 121, Exercise 5-2: "subtractor" s/b "subtracter" (Note: both spellings are acceptable; I made this change to be consistent with other occurrences in the book.)
- * Pg. 123: "It's use is..." s/b "Its use is..."
- * Pg. 129: "...state change nor..." s/b "...state change or..."
- * Pg. 139: "...crept into the the..." s/b "...crept into the..." (And this is in a sentence about all of us making mistakes!)
- * Pg. 145: "...they should stored..." s/b "...they should be stored..."
- * Pg. 147: "...because is does not..." s/b "...because it does not..."
- * Pg. 150: "...you and entire..." s/b "...you an entire..."
- * Pg. 186, "intialize variables" s/b "initialize variables"
- * Pg. 193, Exercise 8-3: "Enter the the..." s/b "Enter the..."
- * Pg. 193, Exercise 8-3: "...Listing Listing..." s/b "...Listing..."
- * Pg. 264: "The were stored..." s/b "They were stored..."
- * Pg. 268: "Restore the the..." s/b "Restore the..."
- * Pg. 290: "...understand the the..." s/b "...understand the..."
- * Pg. 308: "...enter more that 32..." s/b "...enter more than 32..."
- * Pg. 313: "Allcates an int..." s/b "Allocates an int..."
- * Pg. 316: "Allcates two..." s/b "Allocates two..."
- * Pg. 319: "Allcates two..." s/b "Allocates two..."
- * Pg. 320: "...thus effecting..." s/b "...thus affecting..."
- * Pg. 491: "Allcates an int..." s/b "Allocates an int..."
- * Pg. 328, Caption on Listing 13.12: "Add 1 to user's'..." s/b "Add 1 to user's..."
- * Pg. 331, Caption on Listing 13.13: "Add 1 to user's'..." s/b "Add 1 to user's..."
- * Pg. 335, Caption on Listing 13.14: "Add 1 to user's'..." s/b "Add 1 to user's..."
- * Pg. 373: "...that the OS executes..." s/b "...which the OS executes..."
- * Pg. 382, "...to intialize" s/b "...to initialize"
- * Pg. 383: "/* auxilliary..." s/b "/* auxiliary..."
- * Pg. 387, "...to intialize" s/b "...to initialize"
- * Pg. 388: "/* auxilliary..." s/b "/* auxiliary..."
- * Pg. 416: "...a very abbreviated..." s/b "...a much abbreviated..."
- * Pg. 466: "...a single charcter." s/b "...a single character."
- * Pg. 480: "...of the regiser" s/b "...of the register"
- * Pg. 485: "disply results" s/b "display results"
- * Pg. 485: "...decimal unisgned int" s/b "...decimal unsigned int"
- * Pg. 495: "read it it" s/b "read it"
Errata for January 2011 version
- 30 March 2011
- * Pg. 238, typo.
"Junee" should be "June". (Thanks to Daniel Linehan.)
- 16 February 2011
- * Pg. 78.
"...it can be though of as a universal gate" should be "...it can be thought of as a universal gate". (Thanks to Daniel Linehan.)
- 3 February 2011
- * Pp. 29 and 30, Algorithms 3.1, 3.2, and 3.3.
The comment on line 2 should be "
// mod operation
",
and the comment on line 3 should be "// div operation
". (Thanks to Brian Puthuff.)
Errata for August 2010 version
- 3 November 2010
- * Pg. 271, middle of page.
"it can be up to 3110" should be "it can be up to 6310". (Thanks to David Tran.)
- 26 October 2010
- * Pg. 174, Listing 8.8, lines 20 and 24.
"addres" should be "address".
- * Pg. 197, Listing 9.6, line 4.
"20009" should be "2009". (Thanks to David Tran.)
- 13 October 2010
- * Pg. 188, bottom.
"gccgccgcc" should be "gcc". (Thanks to David Tran.)
- * Pg. 192, bottom.
"(b, w, l, o r q)" should be "(b, w, l, or q)". (Thanks to David Tran.)
- 12 October 2010
- * Listing 8.6, pg. 171, line 5.
"contants" should be "constants". (Thanks to David Tran.)
- * Same error in listings on pages 180, 224, 228, 351, 471, 472, and 490.
- 28 September 2010
- * Fig. 6.2, pg. 122.
"r18" should be "r8". (Thanks to David Tran.)
- 8 September 2010
- * pg. 64, misspelling.
"n = number of variables in Karaugh map" should be "n = number of variables in Karnaugh map". (Thanks to Braden Roberson-Mailloux.)
- 4 September 2010
- * pg. 52, Table 3.7.
The font of the last zero on the bottom row does not match the font of the other zeros in this column. (Thanks to David Tran.)
- 1 September 2010
- * pg. 47, Table 3.4.
Each "Corresponding int" should be 32 bits. (Thanks to David Tran.)
Hex character
ASCII code
Corresponding int
0
0011 0000
0000 0000 0000 0000 0000 0000 0000 0000
1
0011 0001
0000 0000 0000 0000 0000 0000 0000 0001
2
0011 0010
0000 0000 0000 0000 0000 0000 0000 0010
3
0011 0011
0000 0000 0000 0000 0000 0000 0000 0011
4
0011 0100
0000 0000 0000 0000 0000 0000 0000 0100
5
0011 0101
0000 0000 0000 0000 0000 0000 0000 0101
6
0011 0110
0000 0000 0000 0000 0000 0000 0000 0110
7
0011 0111
0000 0000 0000 0000 0000 0000 0000 0111
8
0011 1000
0000 0000 0000 0000 0000 0000 0000 1000
9
0011 1001
0000 0000 0000 0000 0000 0000 0000 1001
a
0110 0001
0000 0000 0000 0000 0000 0000 0000 1010
b
0110 0010
0000 0000 0000 0000 0000 0000 0000 1011
c
0110 0011
0000 0000 0000 0000 0000 0000 0000 1100
d
0110 0100
0000 0000 0000 0000 0000 0000 0000 1101
e
0110 0101
0000 0000 0000 0000 0000 0000 0000 1110
f
0110 0110
0000 0000 0000 0000 0000 0000 0000 1111
Errata for January 2010 version
- 1 April 2010
- * pg. 223, Table 10.1.
The condition codes for
jg
are wrong.
They should be:
jg (ZF = 0) · (SF = OF)
(Thanks to Dr. Rivoire.)
- * pg. 296.
Delete the lines:
idiv
source, destination
idiv
immediate, source, destination
and:
idiv
destination, source
idiv
destination, source, immediate
The text ("…signed divide only has one form, which is the same as
unsigned divide.") is correct. (Thanks to Dr. Rivoire.)
- 22 March 2010
- * pg. 393, Listing B.3 is wrong.
(Thanks to Dr. Rivoire.)
It should be:
# Makefile for biggerProg
# Bob Plantz - 19 June 1009
# Specify the compiler and assembler options.
compflags = -g -c -O1 -Wall
asmflags = --gstabs
# The object files are specific to this program.
objects = biggerProg.o sub1.o sub2.o
biggerProg: $(objects)
gcc -o biggerProg $(objects)
biggerProg.o: biggerProg.c sub1.h sub2.h
gcc $(compflags) -o biggerProg.o biggerProg.c
sub1.o: sub1.c sub1.h
gcc $(compflags) -o sub1.o sub1.c
sub2.o: sub2.s
as $(asmflags) -o sub2.o sub2.s
clean:
rm $(objects) biggerProg *~
- 9 February 2010
- * pg. xx, near top. "...distributions that has..." should be "...distributions that have..."
(Thanks to Dr. Rivoire.)
- * pg. xx, middle. "...synomym for..." should be "...synonym for..."
(Thanks to Dr. Rivoire.)
- * pg. xx, near bottom. "...least expensive way..." should be "...least expensive ways..."
(Thanks to Dr. Rivoire.)
- * pg. xxii, second paragraph . The period is missing at end of last sentence.
(Thanks to Dr. Rivoire.)
- * pg. 9, second equation. "1 X 102 + 101 + 3 X 100" should be "1 X 102 + 2 X 101 + 3 X 100"
(Thanks to Carissa Wacker.)
- 27 January 2010
- * In several code listings "
contants
" should be "constants
": pages 177, 186, 232, 237, 363, 488, 489, 507.
(Thanks to Dean.)
- * Pp. 399 - 420, Section 16.6. Comments are missing from some of the listings, and some line numbers have changed due to my using a newer version of the compiler. This has caused both the listings and the text to change. You can download the new version of Section 16.6 here. (Thanks to Jim O'Hara.)
- * Pg. 388, Section 15.6. "...causes the CPU to change the priority levels but does not use the stack nor goes through..." should be "...causes the CPU to change the priority levels but not use the stack nor go through..." (Thanks to Jim O'Hara.)
- * Pg. 396, Section 16.2. "...100 milliseconds. between each character." should be "...100 milliseconds between each character." (Thanks to Jim O'Hara.)
- * Pg. 401, last paragraph.
"The memory addresses
0xff0000 - 0xff020
..." should be "The memory addresses0xff000 - 0xff020
..." (Thanks to Jim O'Hara.) - * Pg. 409, last paragraph. "At the points were the macros..." should be "At the points where the macros..." (Thanks to Jim O'Hara.)
- * Pp. 402 - 404, Listing 16.2 is missing the added comments. You can download the correct file here. Since a newer compiler version was used, the line numbers have changed. Thus on pages 404/405, "line 25 - 40" s/b "lines 66 - 95", "Lines 65 - 73" s/b "Lines 105 - 112". Delete the sentence "The address of the receiver register...on line 75." "...lines 89 - 97 in the charout..." s/b "...lines 128 - 135 in the charout...". Delete the sentence "When it is ready...on line 101." (Thanks to Jim O'Hara.)
- * Pg. 315, Section 12.4. The description of signed division has been rewritten to (hopefully) clarify the issues. You may download a copy here. (Thanks to Jim O'Hara and Mike Lyle.)
- * Pg. 247, bottom of page. "...two instruction implement..." should be "...two instructions implement..." (Saw this one myself.)
- * Pg. 248, bottom of page. Delete "...minus four bytes relative to the frame pointer." (Saw this one myself.)
- * Pg. 328, just above Listing 13.2. "...increased to the next multiple of sixteen, and 208 bytes..." should be "...increased to a multiple of sixteen, and 224 bytes...". Footnote: I do not know why the compiler allocated the additional 16 bytes (224 instead of 208). (Thanks to Jim O'Hara.)
- * Pg. 334, bottom of page. "The next issue is access each..." should be "The next issue is how to access each...". (Thanks to Jim O'Hara.)
- * Pg. 341, line 13 in structPass2.s function (Listing 13.11). ".data" should be ".section .rodata" (Thanks to Mike Lyle.)
- * Pg. 313, line 8 in Listing 12.9. "returns 64-bit int..." should be "returns 32-bit int..." (Thanks to Mike Lyle.)
- * Pg. 291, near top of page.
"
andb $0xee, %ah
" should be "andb $0xee, %al
" (Thanks to Jim O'Hara.) - * Pg. 291, just above listing.
"...end up with
0x89bbccee
ineax
." should be "...end up with0x99bbddff
ineax
." (Thanks to Jim O'Hara.) - * Pg 308, sentence below Algorithm 12.2. "...be powers of two." should be "...by powers of two." (Thanks to Jim O'Hara.)
- * Pg. 279, Listing 11.6. The code on lines 47 - 52 use registers unnecessarily. You may download a better version of this function here. (Thanks to Jim O'Hara.)
- * Pg. 259, Section 10.2.1. "When connecting boolean tests with the && and || operators, each the boolean tests is each performed." should be "When combining boolean tests with the && and || logical operators, each of the boolean tests is executed one at a time from left to right." (Thanks to Jim O'Hara.)
- * Pg. 172, Listing 8.2. Add " # constant data" to the end of line 4. (Thanks to Jim O'Hara.)
- * Pg. 191, near end of first paragraph. "this it the next..." should be "this is the next...". (Thanks to Jim O'Hara.)
- * Pg. 196, Listing 8.8, line 25. "# more to..." should be "# move to...". (Thanks to Jim O'Hara.)
- * Pg. 132, near bottom of page. Delete "24mm". (Thanks to Jim O'Hara.)
- * Pg. 111, near end of second paragraph. "...more of less..." should be "...more or less...". (Thanks to Jim O'Hara.)
- * Pg. 68, bottom. "...to duplicate the second term:" should be "...to duplicate the third term (and rearrange a bit):". (Thanks to Jim O'Hara.)
- * Pg. 69, Figure 4.5. "...in Equation 4.28" should be "...in Equation 4.26". (Thanks to Jim O'Hara.)
- * Pg. 69, Equations (4.27) and (4.28). "F2(x,y,z) = ..." should be "F2(x,y) = ...". (Thanks to Jim O'Hara.)
- * Pg. 74, Example 4-d. "F(x,y,z) = ..." should be "F(w,x,y,z) = ...". (Thanks to Jim O'Hara.)
- * Pg. 76, Example 4-e. Delete "of Equation 4.26. That function is", and delete "which is the same as we found in Equation 4.28." (Thanks to Jim O'Hara.)
- * Pg. 456, Solution 4-15. "(x'0 * y1)" should be "(x'1 * y1)" (Thanks to Jim O'Hara.)
- * Pg. 41, Example 3-e, first equation. "X4096 + X256 + 9 X 16 + 11 X 1" should be "7 X 4096 + 8 X 256 + 9 X 16 + 11 X 1". (Thanks to Jim O'Hara.)
- * Pg. 315, just above Table 12.3.
Add "The instructions,
cwtd
,cltd
, andcqto
introduced at the top of page 246 are designed to help set up thed:a
register pair for division. (Thanks to Mike Lyle for pointing this out.)
- * Pg. 27, Exercise 2-11 f). "65635" should be "65535". The answer (pg. 436) is correct, making this a "Jeopardy" question. ;-)
- * Pg. 39, Equation 3.9. "f16" should be "ff16".
- * Pg. 128, Figure 6.4. "...bussed" should be "...busses". (Thanks to Nick Morrill.)
- * Pg. 157. "Algorithms Algorithms" should be "Algorithms". (Thanks to Zack Gold.)
- * Pp. 437-438.
Solutions are mislabled. (Thanks to Debra Thayer.)
- 4-8 s/b 4-9
- 4-9 s/b 4-10
- 4-10 s/b 4-11
- 4-14 s/b 4-15
- * Pg. 34. In the arithmetic example "sum" should be "difference".
- * Pg. 160, top. "as -gstabs -o doNothingProg.o doNothingProg.o" should be "as -gstabs -o doNothingProg.o doNothingProg.s". (Thanks to Zack Gold.)
- * Pg. 31, typo. "there is there is" should be "there is".
- * Pg. 125, Table 6.3, typo. "r24" should be "r14". (Thanks to Zack Gold.)
- I apologize for the following two production problems:
- In the eBook version some spaces between words have been lost. They show up visually but not if you copy and paste the text.
- In the print version all even-numbered pages seem to be numbered "preface."
- I would like to thank Zack Gold for providing me with the following list of typos in the book:
- * Pg xiv: Three occurrences of "Add 1 to user's'..." s/b "Add 1 to user's..."
- * Pg xiv: Three occurrences of "Add 1 to user's'..." s/b "Add 1 to user's..."
- * Pg xvi: "...essentially a synomym..." s/b "...essentially a synonym..."
- * Pg. 238, typo. "Junee" should be "June". (Thanks to Daniel Linehan.)
- * Pg. 78. "...it can be though of as a universal gate" should be "...it can be thought of as a universal gate". (Thanks to Daniel Linehan.)
- * Pp. 29 and 30, Algorithms 3.1, 3.2, and 3.3.
The comment on line 2 should be "
// mod operation
", and the comment on line 3 should be "// div operation
". (Thanks to Brian Puthuff.)
- * Pg. 271, middle of page. "it can be up to 3110" should be "it can be up to 6310". (Thanks to David Tran.)
- * Pg. 174, Listing 8.8, lines 20 and 24. "addres" should be "address".
- * Pg. 197, Listing 9.6, line 4. "20009" should be "2009". (Thanks to David Tran.)
- * Pg. 188, bottom. "gccgccgcc" should be "gcc". (Thanks to David Tran.)
- * Pg. 192, bottom. "(b, w, l, o r q)" should be "(b, w, l, or q)". (Thanks to David Tran.)
- * Listing 8.6, pg. 171, line 5. "contants" should be "constants". (Thanks to David Tran.)
- * Same error in listings on pages 180, 224, 228, 351, 471, 472, and 490.
- * Fig. 6.2, pg. 122. "r18" should be "r8". (Thanks to David Tran.)
- * pg. 64, misspelling. "n = number of variables in Karaugh map" should be "n = number of variables in Karnaugh map". (Thanks to Braden Roberson-Mailloux.)
- * pg. 52, Table 3.7. The font of the last zero on the bottom row does not match the font of the other zeros in this column. (Thanks to David Tran.)
- * pg. 47, Table 3.4.
Each "Corresponding int" should be 32 bits. (Thanks to David Tran.)
Hex character ASCII code Corresponding int 0
0011 0000
0000 0000 0000 0000 0000 0000 0000 0000
1
0011 0001
0000 0000 0000 0000 0000 0000 0000 0001
2
0011 0010
0000 0000 0000 0000 0000 0000 0000 0010
3
0011 0011
0000 0000 0000 0000 0000 0000 0000 0011
4
0011 0100
0000 0000 0000 0000 0000 0000 0000 0100
5
0011 0101
0000 0000 0000 0000 0000 0000 0000 0101
6
0011 0110
0000 0000 0000 0000 0000 0000 0000 0110
7
0011 0111
0000 0000 0000 0000 0000 0000 0000 0111
8
0011 1000
0000 0000 0000 0000 0000 0000 0000 1000
9
0011 1001
0000 0000 0000 0000 0000 0000 0000 1001
a
0110 0001
0000 0000 0000 0000 0000 0000 0000 1010
b
0110 0010
0000 0000 0000 0000 0000 0000 0000 1011
c
0110 0011
0000 0000 0000 0000 0000 0000 0000 1100
d
0110 0100
0000 0000 0000 0000 0000 0000 0000 1101
e
0110 0101
0000 0000 0000 0000 0000 0000 0000 1110
f
0110 0110
0000 0000 0000 0000 0000 0000 0000 1111
- 1 April 2010
- * pg. 223, Table 10.1.
The condition codes for
jg
are wrong. They should be:
jg (ZF = 0) · (SF = OF)
(Thanks to Dr. Rivoire.) - * pg. 296.
Delete the lines:
idiv
source, destination
idiv
immediate, source, destination
and:
idiv
destination, source
idiv
destination, source, immediate
The text ("…signed divide only has one form, which is the same as unsigned divide.") is correct. (Thanks to Dr. Rivoire.)
- * pg. 223, Table 10.1.
The condition codes for
- 22 March 2010
- * pg. 393, Listing B.3 is wrong.
(Thanks to Dr. Rivoire.)
It should be:
# Makefile for biggerProg # Bob Plantz - 19 June 1009 # Specify the compiler and assembler options. compflags = -g -c -O1 -Wall asmflags = --gstabs # The object files are specific to this program. objects = biggerProg.o sub1.o sub2.o biggerProg: $(objects) gcc -o biggerProg $(objects) biggerProg.o: biggerProg.c sub1.h sub2.h gcc $(compflags) -o biggerProg.o biggerProg.c sub1.o: sub1.c sub1.h gcc $(compflags) -o sub1.o sub1.c sub2.o: sub2.s as $(asmflags) -o sub2.o sub2.s clean: rm $(objects) biggerProg *~
- * pg. 393, Listing B.3 is wrong.
(Thanks to Dr. Rivoire.)
It should be:
- 9 February 2010
- * pg. xx, near top. "...distributions that has..." should be "...distributions that have..." (Thanks to Dr. Rivoire.)
- * pg. xx, middle. "...synomym for..." should be "...synonym for..." (Thanks to Dr. Rivoire.)
- * pg. xx, near bottom. "...least expensive way..." should be "...least expensive ways..." (Thanks to Dr. Rivoire.)
- * pg. xxii, second paragraph . The period is missing at end of last sentence. (Thanks to Dr. Rivoire.)
- * pg. 9, second equation. "1 X 102 + 101 + 3 X 100" should be "1 X 102 + 2 X 101 + 3 X 100" (Thanks to Carissa Wacker.)
- 27 January 2010
- * In several code listings "
contants
" should be "constants
": pages 177, 186, 232, 237, 363, 488, 489, 507. (Thanks to Dean.)
- * In several code listings "