Introduction
to 64 Bit Assembly Language Programming for Linux and OS X
Ray Seyfarth
Corrections
Chapter 2
Page 14. The table for hex and binary values should have a-f rather
than 10-15 in the hex column.
Page 18. The multiplication example is missing the first row of the
subproducts. It should look like:
1010101
x 10101
-----------
1010101
1010101
1010101
-----------
11011111001
Page 19. Third sentence of the paragraph starting with "The fraction
field" needs to have an uppercase "A".
Page 23. The display about 1/3 way down needs adjusting so that "fraction"
appears at the end of the first line of the display.
Chapter 3
Page 32. Fourth line has 23 which should be 22.
Page 34. The last paragraph contains a reference to the "Size" field
which no longer exists is this version of ebe. The paragraph should state
the "type" has been selected as "int" which is a 4 byte integer matching the
"dd" specification in the code.
Page 35. Size is not selectable in the new ebe. The paragraph before
the picture should refer to the type of d being short and the type of e
being unsigned char. Remove the sentence concluding that the size of a
string doesn't matter. Add a sentence before the picture will all thes
variables defined: The type for a should be "unsigned char" though the
program works fine with type "int".
Chapter 4
Page 41. Insert "in" between "processes" and "Linux" in the second
paragraph.
Page 45. Exercise 6 needs to be split into 2 exercises with exercise 7
starting with "Write an assembly program ..."
Chapter 5
Page 46. Line 6 of paragraph 1 needs the singular form of
"instruction".
Page 47. In the list of registers si needs to be on a line by itself.
Page 48. In the first paragraph of section 5.2 there should be a
period after "value".
Page 47. 15th line from the bottom change "to lower 16 bits" to "the
lower 16 bits".
Chapter 7
Page 70. Section should be 7.2 for the and operation.
Chapter 9
Page 112. Next to the last paragraph. Technically the reason for the
use of rip relative addressing is to use less memory. By using relative
addressing the offsets will fit into 32 bits which reduces space used to
reference static data and code in the program. In particular a call would
require more bytes of RAM if all 64 bits of the function address were
included.
Chapter 11
Page 134. Last line. There is an extraneous "AVX".
Page 135. Third paragraph. The python ebe placed the general purpose
registers and the floating point registers in one window. Replace "lower
section of the registers window" with "floating point register window".