cpplinks Documentation

A categorized list of C++ resources.

RAW Doc

File: README.md

A categorized list of C++ resources.

Categories

About

Being a part of a few C++ communities, I happen to run across some interesting links -- this is an attempt to categorize them. Thanks to Saurabh Malpani from "C++ Enthusiasts" for the suggestion.

An ongoing, work-in-progress effort -- comments, feedback, and suggestions welcome!

Hopefully some will find this of some use and interest, too :-)


File: analysis.dynamic.md

See also:

Contents


Dynamic Binary Instrumentation (DBI)

Dynamic Binary Instrumentation (DBI): Readings

Dynamic Binary Instrumentation (DBI): Software


Dynamic Binary Translation (DBT)


Readings


Software

Software: Compilers

See also: Sanitizers

Software: Frida

Software: Memory Forensics

Software: Pin

Software: Pin: Readings

Software: Pin: Projects

Software: Sanitizers

Compiler-Based Static Instrumentation

Software: Sanitizers: Readings

Software: Sanitizers: Readings: Research

Software: Sanitizers: Readings: Research: 2026

Software: Sanitizers: Readings: Research: 2025

Software: Sanitizers: Readings: Research: 2024

Software: Sanitizers: Readings: Research: 2023

Software: Sanitizers: Readings: Research: 2022

Software: Sanitizers: Readings: Research: 2021

Software: Sanitizers: Readings: Research: 2020

Software: Sanitizers: Readings: Research: 2018

Software: Sanitizers: Readings: Research: 2017

Software: Sanitizers: Readings: Research: 2016

Software: Sanitizers: Projects

Software: Sanitizers: Talks

Software: Valgrind


File: analysis.static.md

See also:

Contents


Readings

Readings: Books

Readings: Implementation

  • Implementing and Executing Static Analysis Using LLVM and CodeChecker

Readings: Research

Readings: Research: Correctness

Testing, Validation, Verification

See also: Compilers Correctness

Readings: Research: Usability


Benchmarking

Benchmarks & comparisons


Software

Software: Compilers

Software: Indexing


Verification

Verification & Model Checking

  • Formal Verification to Ensuring the Memory Safety of C++ Programs
    • 2020 M.Sc. Thesis; Felipe R. Monteiro
    • https://feliperodri.github.io/papers/msc-manuscript.pdf
    • https://feliperodri.github.io/talks/msc-presentation.pdf
    • Apply model checking techniques to ensuring memory safety of C++ programs:
      • (i) Provide a logical formalization of essential features that the C++ programming language offers, such as templates, sequential and associative containers, inheritance, polymorphism, and exception handling.
      • (ii) Provide a set of abstractions to the Standard C++ Libraries that reflects their semantics, in order to enable the verification of functional properties related to the use of these libraries.
      • (iii) Extend an existing verifier to handle the verification of C++ programs based on (i) and (ii) and evaluate its efficiency and effectiveness in comparison to similar state-of-the-art approaches.
  • Model Checking a C++ Software Framework, a Case Study
    • European Software Engineering Conference / Foundations of Software Engineering (ESEC/FSE) 2019
    • John Lรฅng, I.S.W.B. Prasetya
    • https://arxiv.org/abs/1907.00172
  • Model Checking C++ Programs

Verification: Software

See also: Program Analysis - LLVM - Verification


Talks

Talks: 2021


File: assembly.arm.md

See also: Computer Architecture -- recommended background (which makes the following significantly more approachable) includes an undergraduate-level course.

Contents


Readings

Readings: Binary Analysis

See also: Software: Binary Analysis

Readings: Binary Analysis: 2023

Readings: Binary Analysis: 2014-2022

Readings: Concurrency

Readings: Emulation

Formalization, Specification, Verification

Instruction Set Architecture

Encoding, Shellcode

A-profile

M-profile

Performance

Performance: Numerics

Performance: Statistical Profiling Extension (SPE)

Security

Security: 2023

Security: Arm Confidential Compute Architecture (CCA)

Security: Debugging

Memory Tagging Extension (MTE)

Memory Tagging Extension (MTE): 2026

Memory Tagging Extension (MTE): 2025

  • Optimized Memory Tagging on AmpereOne Processors
    • 2025
    • Shiv Kaushik, Mahesh Madhav, Nagi Aboulenein, Jason Bessette, Sandeep Brahmadathan, Ben Chaffin, Matthew Erler, Stephan Jourdan, Thomas Maciukenas, Ramya Masti, Jon Perry, Massimo Sutera, Scott Tetrick, Bret Toll, David Turley, Carl Worth, Atiq Bajwa
    • https://arxiv.org/abs/2511.17773

Memory Tagging Extension (MTE): 2018-2024

Pointer Authentication (PAC)

Pointer Authentication (PAC): 2024

Pointer Authentication (PAC): 2023

Pointer Authentication (PAC): 2022

Pointer Authentication (PAC): 2019-2017

TrustZone

Simulation

  • Simulation of ARM and x86 microprocessors using in-order and out-of-order CPU models with Gem5 simulator
  • Simulation of 64-bit ARM Systems: Implementation, Validation and Design Space Exploration

Virtualization


References

References: Application Binary Interface (ABI)

References: Microarchitecture

References: Microarchitecture: Apple

References: Microarchitecture: Apple: M1

References: Microarchitecture: Arm

References: Microarchitecture: Arm: Cortex

References: Microarchitecture: Arm: Neoverse

References: Microarchitecture: Arm: Neoverse: N-Series

References: Microarchitecture: Arm: Neoverse: V-Series

References: Microarchitecture: Fujitsu

References: Microarchitecture: NVIDIA

References: OS

Intrinsics & SIMD

Neon

Scalable Matrix Extension (SME)

Scalable Vector Extension (SVE)

Scalable Vector Extension (SVE): Applications

Scalable Vector Extension (SVE): LLVM Implementation

Scalable Vector Extension (SVE): Tutorials

References: Toolchains


Software

Software: Assembly

Software: Binary Analysis

See also: Readings: Binary Analysis

Software: Concurrency

Software: Debugging, Tracing

Software: Emulation, Simulation

Software: Emulation, Simulation: x86, x86-64

Software: Lifting

Disassemblers, Decompilers, Recompilers

Software: Performance

See also: Performance Tools

Software: Performance: Apple Silicon

Software: Performance: Benchmarking

Software: Performance: Cache

Software: Performance: Events

Software: Performance: Libraries

Software: Performance: SIMD

  • SIMDe (SIMD Everywhere): Implementations of SIMD instruction sets for systems which don't natively support them

Software: Performance: SIMD: Neon

Software: Performance: SIMD: SVE

  • Farm-SVE: A scalar C++ implementation of the ARMยฎ Scalable Vector Extension (SVE)

Software: Virtualization


Talks

2019

2018

2017

2016

2015

2014

2012

2011

2010

History


Tutorials, Courses

AArch64

Thumb-2


File: assembly.riscv.md

Note: see Computer Architecture -- recommended background (which makes the following significantly more approachable) includes an undergraduate-level course.

Contents


Readings

https://riscv.org/publications/

Readings: Performance

Readings: Performance: Research

Readings: Security

  • Return-Oriented Programming on RISC-V
    • 2020 ACM Asia Conference on Computer and Communications Security (AsiaCCS)
    • Georges-Axel Jaloyan, Konstantinos Markantonakis, Raja Naeem Akram, David Robin, Keith Mayes, David Naccache
    • https://doi.org/10.1145/3320269.3384738

Books

https://riscv.org/risc-v-books/

Concurrency

Emulation & Simulation

Instruction Set Architecture

Instruction Set Architecture: Encoding

Instruction Set Architecture: Extensions

Instruction Set Architecture: Extensions: Bit Manipulation

  • RISC-V Scalar Bit Manipulation Extensions
    • 2024-04-08
    • Zba (address generation), Zbb (basic bit manipulation), Zbc (carry-less multiplication), Zbs (single-bit manipulation), Zbkb (bit manipulation for cryptography), Zbkc (carry-less for cryptography), Zbkx (crossbar permutations), B Standard Extension for Bit Manipulation Instructions (Zba, Zbb, Zbs)
    • https://fprox.substack.com/p/risc-v-scalar-bit-manipulation-extensions

Instruction Set Architecture: Extensions: C Standard Extension for Compressed Instructions

Instruction Set Architecture: Extensions: Cryptography

RISC-V Cryptography Extensions Volume II: Vector Instructions:
Zvbb, Zvbc, Zvkb, Zvkg, Zvkn, Zvknc, Zvkned, Zvkng, Zvknha, Zvknhb, Zvks, Zvksc, Zvksed, Zvksg, Zvksh, Zvkt

Instruction Set Architecture: Extensions: Smcntrpmf: Cycle & Instret Privilege Mode Filtering Architecture Extension

Instruction Set Architecture: Extensions: V Vector Extension

Instruction Set Architecture: Extensions: "Zfa" Standard Extension for Additional Floating-Point Instructions

Instruction Set Architecture: Extensions: "Zfbfmin, Zvfbfmin, Zvfbfwma" BF16 Extensions

Instruction Set Architecture: Extensions: "Zfh" and "Zfhmin" Standard Extensions for Half-Precision Floating-Point

Instruction Set Architecture: Extensions: Zimop, Zcmop May-Be-Operations

Instruction Set Architecture: Profiles

Simulation


Formalization, Specification, Verification


Open-Source Hardware Projects


References

https://riscv.org/specifications/


Software

https://riscv.org/software-tools/

Software: Binary Analysis

Software: Emulation & Simulation

Software: Performance

Software: Security

Software: Translation


Talks

Talks: 2024

Talks: 2020

Talks: 2019

Talks: 2018

Talks: 2017


Tutorials