x86-64 Assembly Language Programming with Ubuntu (Jorgensen)
( \newcommand{\kernel}{\mathrm{null}\,}\)
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 (RISC).
Front Matter
1: Introduction
2: Architecture Overview
3: Data Representation
4: Program Format
5: Tool Chain
6: DDD Debugger
7: Instruction Set Overview
8: Addressing Modes
9: Process Stack
10: Program Development
11: Macros
12: Functions
13: System Services
14: Multiple Source Files
15: Stack Buffer Overflow
16: Command Line Arguments
17: Input/Output Buffering
18: Floating-Point Instructions
19: Parallel Processing
20: Interrupts
21: Appendices
Back Matter
Thumbnail: Computer Chip (Unsplash License; Brian Kostiuk via Unsplash).