x86-64 Assembly Language Programming with Ubuntu

Assembly Language Programming with Ubuntu

Assembly Language Programming with Ubuntu – 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).


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

Related: How to Think Like a Computer Scientist: C Version

About the Contributors


Ed Jorgensen


Join our Telegram channelJoin Now!!!