Introducción a la Organización del Ordenador Usando Ensamblador con un Raspberry Pi

Subsistema del Ordenador

Subsistema del Ordenador

Introduction to Computer OrganizationARM Assembly Language Using the Raspberry Pi es un libro electrónico y gratuito que nos enseña cómo funciona el hardware, a bajo nivel, de un ordenador desde el punto de vista del programador.

Para ello, se basa en uno de nuestros “juguetes” favoritos: Raspberry Pi, con Raspbian y usando lenguaje ensamblador para la arquitectura de la CPU de dicho dispositivo: ARM.

El objetivo del libro es que el lector llegue a entender como funciona un ordenador desde el nivel más bajo. Aunque uno prácticamente no escriba aplicaciones directamente en ensamblador, sin duda alguna te hará mucho mejor a la hora de programar, analizar malware, realizar ingeniería inversa, etc.

El libro empieza desde los conceptos más básicos como la preparación de tu Raspberry Pi o el sistema binario, hasta el uso de interrupciones y el GPIO.

El índice del mismo es el siguiente:

  • Introduction
    • Efficient Use of This Book
    • Computer Subsystems
    • How the Subsystems Interact
    • Setting Up Your Raspberry Pi
  • Data Storage Formats
    • Bits and Groups of Bits
    • Exercises
    • Mathematical Equivalence of Binary and Decimal
    • Exercises
    • Unsigned Decimal to Binary Conversion
    • Exercises
    • Memory
    • Exercises
    • Using C Programs to Explore Data Formats
    • Programming Exercises
    • Examining Memory With a Debugger
    • Programming Exercise
    • Storing Characters
    • Programming Exercise
    • Low-level Character Handling
    • Programming Exercises
    • Accessing the GPIO in C
  • Computer Arithmetic
    • Addition and Subtraction
    • Exercises
    • Arithmetic Errors—Unsigned Integers
    • Signed Integers
    • Exercises
    • Arithmetic Errors—Signed Integers
    • Exercises
    • Basic Data Types
    • C/C++ Basic Data Types
    • Hexadecimal to Integer Conversion
    • Programming Exercise
    • Bitwise Logical Operations
    • Programming Exercise
    • Other Codes.
    • Boolean Algebra
    • Boolean Algebra Operations
    • Exercises
    • Canonical (Standard) Forms
    • Exercise
    • Boolean Function Minimization
    • Exercises
  • Logic Gates
    • Crash Course in Electronics
    • CMOS Transistors
    • NAND and NOR Gates
    • Exercise
  • Logic Circuits
    • Combinational Logic Circuits
    • Programmable Logic Devices
    • Sequential Logic Circuits
    • Designing Sequential Circuits
    • Memory Organization
  • Central Processing Unit
    • Overview
    • CPU Registers
    • CPU Interaction with Memory
    • Program Execution in the CPU
    • Using gdb to View the CPU Registers
    • Programming Exercises
    • Programming in Assembly Language
    • Program Organization
    • First Assembly Language Instructions
    • Creating a Program in Assembly Language
    • Programming Exercises
    • Assemblers and Linkers
    • Structure of the main Function
    • Passing Arguments in Registers
    • The Stack
    • Stack Management In a Function
    • Programming Exercise
    • Local Variables on the Stack
    • Programming Exercise
    • Data Storage in Memory
  • Instruction Details
    • Addressing Modes
    • The Assignment Operator
    • Machine Code, Assignment
    • Branching
    • Machine Code, Branching
    • Assembler Listings
  • Program Flow Constructs
    • Repetition
    • Programming Exercises
    • Binary Decisions
    • Programming Exercise
  • Writing Your Own Functions
    • Overview of Passing Arguments
    • Accessing Arguments in a Function
    • Programming Exercises
  • Bit Operations; Multiplication and Division
    • Logical Instructions
    • Programming Exercise
    • Shifting Bits
    • Programming Exercises
    • Multiplication
    • Division
    • Programming Exercises
  • Data Structures
    • Arrays
    • Programming Exercise
    • Records (structs)
    • structs as Function Arguments
    • Programming Exercise
    • structs as C++ Objects
    • Programming Exercise
  • Fractional Numbers
    • Fractional Values in Binary
    • Programming Exercise
    • Fixed Point Fractional Values
    • Floating Point Format
    • IEEE 754
    • Exercises
    • Floating-Point Hardware
  • Interrupts and Exceptions
    • CPU Features
    • Supervisor Call
    • Interrupts
    • Error Condition
  • Input/Output
    • Memory Timing
    • I/O Device Timing
    • Bus Timing
    • I/O Interfacing
    • I/O Ports
    • Programming Exercise
  • General Purpose Input/Output (GPIO) Device
    • GPIO I/O Memory
    • GPIO Connections
    • Programming Exercise