======================================================== Architecture & Platform Information for Compiler Writers ======================================================== .. contents:: :local: .. note:: This document is a work-in-progress. Additions and clarifications are welcome. Hardware ======== AArch64 & ARM ------------- * `ARMv8-A Architecture Reference Manual `_ (authentication required, free sign-up). This document covers both AArch64 and ARM instructions * `ARMv7-M Architecture Reference Manual `_ (authentication required, free sign-up). This covers the Thumb2-only microcontrollers * `ARMv6-M Architecture Reference Manual `_ (authentication required, free sign-up). This covers the Thumb1-only microcontrollers * `ARM C Language Extensions `_ * AArch32 `ABI Addenda and Errata `_ Itanium (ia64) -------------- * `Itanium documentation `_ Lanai ----- * `Lanai Instruction Set Architecture `_ MIPS ---- * `MIPS Processor Architecture `_ * `MIPS 64-bit ELF Object File Specification `_ PowerPC ------- IBM - Official manuals and docs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * `Power Instruction Set Architecture, Versions 2.03 through 2.06 (authentication required, free sign-up) `_ * `PowerPC Compiler Writer's Guide `_ * `Intro to PowerPC Architecture `_ * `PowerPC Processor Manuals (embedded) `_ * `Various IBM specifications and white papers `_ * `IBM AIX/5L for POWER Assembly Reference `_ Other documents, collections, notes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * `PowerPC ABI documents `_ * `PowerPC64 alignment of long doubles (from GCC) `_ * `Long branch stubs for powerpc64-linux (from binutils) `_ AMDGPU ------ Refer to :doc:`AMDGPUUsage` for additional documentation. RISC-V ------ * `RISC-V User-Level ISA Specification `_ SPARC ----- * `SPARC standards `_ * `SPARC V9 ABI `_ * `SPARC V8 ABI `_ SystemZ ------- * `z/Architecture Principles of Operation (registration required, free sign-up) `_ X86 --- * `AMD processor manuals `_ * `Intel 64 and IA-32 manuals `_ * `Intel Itanium documentation `_ * `X86 and X86-64 SysV psABI `_ * `Calling conventions for different C++ compilers and operating systems `_ XCore ----- * `The XMOS XS1 Architecture (ISA) `_ * `Tools Development Guide (includes ABI) `_ Hexagon ------- * `Hexagon Programmer's Reference Manuals and Hexagon ABI Specification (registration required, free sign-up) `_ Other relevant lists -------------------- * `GCC reading list `_ ABI === * `System V Application Binary Interface `_ * `Itanium C++ ABI `_ Linux ----- * `Linux extensions to gabi `_ * `PowerPC 64-bit ELF ABI Supplement `_ * `Procedure Call Standard for the AArch64 Architecture `_ * `ELF for the ARM Architecture `_ * `ELF for the ARM 64-bit Architecture (AArch64) `_ * `System z ELF ABI Supplement `_ OS X ---- * `Mach-O Runtime Architecture `_ * `Notes on Mach-O ABI `_ Windows ------- * `Microsoft PE/COFF Specification `_ NVPTX ===== * `CUDA Documentation `_ includes the PTX ISA and Driver API documentation Miscellaneous Resources ======================= * `Executable File Format library `_ * `GCC prefetch project `_ page has a good survey of the prefetching capabilities of a variety of modern processors.