Bibliografía

A continuación se lista la bibliografía principal y la complementaria. Cada ítem tiene una abreviatura que usaremos en nuestras referencias, por ejemplo: [K&R] §2.3.

Bibliografía principal

Computer Systems: A Programmer’s Perspective (3.ª ed.) , Pearson [BRY15]

Randal E. Bryant, David R. O’Hallaron

Observaciones sobre la edición a usar

Se debe usar la 3.ª edición, de 2015. En la edición anterior (de 2011) la arquitectura de referencia es x86 (32-bits), mientras que en la materia utilizamos x86_64 (64-bits).

Existen dos versiones publicadas en 2015 una primera edición para Estados Unidos, y una segunda para el resto del mundo, denominada “Global”. En la materia se usa esta edición “Global”, con la portada que aquí se muestra, y cuyos ISBN son:

  • 978-1-292-10176-7 (papel)
  • 978-1-488-67207-1 (PDF, 2016)

Computer Systems: A Programmer’s Perspective

Computer Organization and Design RISC-V Edition (1.ª ed.) , Morgan Kaufmann [PAT17]

David Patterson, John Hennessy

Observaciones sobre la edición a usar

Hay varias ediciones del libro Computer Organization and Design para diferentes arquitecturas. Si bien todas aportan los contenidos teóricos, en la práctica es conveniente utilizar la versión RISC-V, que es además de la que tomamos partes.

ISBN:

  • 978-0-128-12275-4 (papel)
  • 978-0-128-12276-1 (ebook)

Computer Organization and Design RISC-V Edition

Sobre programación en C

  • Brian Kernighan, Dennis Ritchie, The C Programming Language (2.ª ed.), Prentice Hall (1988). [K&R]

  • Richard Reese, Understanding and Using C Pointers (2.ª ed.), O’Reilly Media (2013). [REES]

Sobre programación en Rust

  • Steve Klabnik, Carol Nichols, The Rust Programming Language (2018), No Starch Press (2018). [RUST18]

Sobre llamadas al sistema

  • Michael Kerrisk, The Linux Programming Interface: A Linux and UNIX System Programming Handbook (1.ª ed.), No Starch Press (2010). [KERR]

  • Robert Love, Linux System Programming (2.ª ed.), O’Reilly Media (2013). [LOV]

Material de referencia

  • The Linux man-pages project: kernel.org/doc/man-pages.

    • Instalable en Debian/Ubuntu:

      1
      
      $ sudo apt install manpages-dev manpages-posix-dev
      
    • Abreviatura: open(2) o malloc(3) (nombre de la página y sección).

  • Intel 64 and IA-32 Architectures Software Developer Manuals, Intel Corporation (marzo de 2017), en línea. [IA32]
    En particular:

    • Volume 1: Basic Architecture, pdf.
    • Volume 3A: System Programming Guide, part 1, pdf.
  • ISO/IEC. Programming Languages – C. ISO/IEC 9899:1999(E). ANSI [STDC99]

  • IEEE 754-2008 - IEEE Standard for Floating-Point Arithmetic [IEEE754]