x86-64 Assembly Language Programming with Ubuntu
Ed Jorgensen, University of Nevada
Copyright Year: 2019
Publisher: Ed Jorgensen
Conditions of Use
The book presents a good coverage of x86-64 Assembly Language Programming. The book also provides some practical details regarding the execution of x86-64 instructions under the Ubuntu operating system. Further, each chapter of the book includes... read more
The book presents a good coverage of x86-64 Assembly Language Programming. The book also provides some practical details regarding the execution of x86-64 instructions under the Ubuntu operating system. Further, each chapter of the book includes some exercises and suggested projects that help the reader to understand the material covered in a chapter.
It is accurate.
The subject is important in computer engineering and computer science fields considering the widespread electronic systems in human life and the importance of developing efficient programs for electronic systems.
The book strives to present a subject as simple as possible without overloading its readers. Further, the book pays attention to the font size of the text such that a reader becomes comfortable with the text.
It is consistent.
The subject is divided into a good number of chapters with reasonable sizes.
The book has a good organization, and subjects are presented in a good flow. It introduces some basics such as data representation, then it describes the instruction set. The book focuses on more advanced and complex subjects such as system services and interrupts.
The interface is fine.
The book is easy to read, meanwhile, it has room for improvement.
The book does not contain any cultural insensitive issue.
The book can serve as a good reference. A reader can significantly benefit from the book if its sample codes become available online. Dedicating a website for the book with an embedded virtual environment to practice the coding would enhance educational outcomes.
The book seems to cover many details of x86-64 Assembly, however, it does not teach how to program. read more
The book seems to cover many details of x86-64 Assembly, however, it does not teach how to program.
The information I read was accurate.
In the field of computer science, some books can become outdated within a year. Considering new CPU are designed every year, this book may need to be updated yearly.
The book does seem to provide a good amount of context and technical information about CPU and hardware.
The book topics are consistent.
I am giving full score for this one, since the author did a great job of dividing concepts and information into logical sections.
Similar to Modularity, I am giving full score for organization of this book.
The interface is more or less fine.
I am giving 4 on this one, since some statements could a have been written a bit shorter.
I did not see any cultural insensitive issue.
Overall, it is a great reference book.
Table of Contents
- 1.0 Introduction
- 2.0 Architecture Overview
- 3.0 Data Representation
- 4.0 Program Format
- 5.0 Tool Chain
- 6.0 DDD Debugger
- 7.0 Instruction Set Overview
- 8.0 Addressing Modes
- 9.0 Process Stack
- 10.0 Program Development
- 11.0 Macros
- 12.0 Functions
- 13.0 System Services
- 14.0 Multiple Source Files
- 15.0 Stack Buffer Overflow
- 16.0 Command Line Arguments
- 17.0 Input/Output Buffering
- 18.0 Floating-Point instructions
- 19.0 Parallel Processing
- 20.0 Interrupts
- 21.0 Appendix A - ASCII Table
- 22.0 Appendix B - Instruction Set Summary
- 23.0 Appendix C - System Services
- 24.0 Appendix D - Quiz Question Answers
About the Book
The purpose of this text is to provide a reference for University level assembly language and systems programming courses. Specifically, this text addresses the x86-64 instruction set for the popular x86-64 class of processors using the Ubuntu 64-bit Operating System (OS). While the provided code and various examples should work under any Linux-based 64-bit OS, they have only been tested under Ubuntu 14.04 LTS (64-bit). The x86-64 is a Complex Instruction Set Computing (CISC) CPU design. This refers to the internal processor design philosophy. CISC processors typically include a wide variety of instructions (sometimes overlapping), varying instructions sizes, and a wide range of addressing modes. The term was retroactively coined in contrast to Reduced Instruction Set Computer (RISC3).
About the Contributors