Skip to content

Semi-organised collection of useful resources from my experience learning (...trying to learn?) assembly.

Notifications You must be signed in to change notification settings

rsouth/asm-reading-list

Repository files navigation

Also see my Rust Reading List and my ASM Learning Notes which I'm writing as I learn; might also be useful for other beginner ASM developers.

I'm learning ASM primarily to better understand the output of my Rust and C++ programs. This repo is a link-dump, hopefully will evolve in to a useful resource for others learning ASM in 2021 for similar reasons!

Legend: 🎥 Video | ⚠️ No HTTPS | 🏫 .edu TLD

Try searching by #tags - for example #beginner, #linux or #intel

💻 Environment & Tools

Currently coding on Ubuntu in VIM and hitting NASM/YASM + ld from the terminal. I would like to get together a good environment on both Windows and Linux and will document / link here once I do.

GodBolt Compiler Explorer - See the output from various compilers; useful for seeing the resulting ASM and evaluating the difference between different implementations.

📚 Tutorials / Series

TutorialsPoint - NASM #beginner-friendly #tutorial #nasm #linux #intel

Let's Learn x86-64 Assembly! (2020) #beginner-friendly #windows #fasm #x86-64 #series #tutorial

🏫 NASM Tutorial #edu #nasm #tutorial #x86-64 #linux #macos #windows #beginner-friendly

Understanding Windows x64 Assembly, on :octocat: GitHub and a great page of Additional Resources #intermediate #nasm #linux #windows

Say hello to x86_64 Assembly (2014) #linux #x86-64

Writing a Bootloader (2017) #beginner-friendly #nasm #qemu

x86 assembly doesn’t have to be scary (2018) #introductory

ASM Tutor - Learn Assembly Language and on :octocat: GitHub #beginner-friendly #linux #nasm #x86

How to Read Assembly Language (2021) and How to Read ARM64 Assembly Language (2021) #article #introductory #intel #arm64

RIP Tutorial - Getting started with Assembly Language

🎥 Videos

🎥 Series - Modern x64 Assembly

🎥 HelloWorld in x86 and x64 Assembly Language (2021)

🚀 Downloads

📄 x84-x64 Assembly Language Programming with Ubuntu - Ed Jorgensen, Ph.D. (2020)

📄 What Every Programmer Should Know About Memory - Ulrich Drepper (2007)

Programming from the Group Up - Jonathan Bartlett (2004) or Mirror #beginner-friendly #x86 #linux #gcc #at&t

💲 Introduction to 64 Bit Assembly Language Programming for Linux and OS X #5-usd #beginner-friendly #linux #yasm #gdb

🏫 Writing a Simple Operating System - from Scratch or Mirror and many, many more by suffixing /lectures to the academic year (e.g. /opsys/10_11/lectures) #nasm #intel #pdf-downloads #lectures

Software optimization resources #advanced #pdf-downloads #2021 #C++

💲 Reverse Engineering for Beginners / Understanding Assembly Language #donation #pdf-download

✔️ Testing

TDD in Assembler (slides)

How to Unit Test Assembly

GitHub - asmtest - A script to help with unit testing assembly code, with JSON-based configuration.

📝 Notes / 💬 Discussions

X64 Linux Assembly Environment Setup

Ask HN: What's the best resource for learning modern x64 assembly?

🦀 Rust + ASM

Read Rust - ASM Tag

r/rust - How to see the assembly code for rust code getting compiled

:octocat: gnzlbg/cargo-asm - cargo subcommand showing the assembly or llvm-ir generated for Rust code

:octocat: jeremydavis519/rusty-asm - A layer of syntactic sugar between Rust and inline assembly

Interacting with assembly in Rust

asm - The Rust Unstable Book

🧹 Dumping Ground

Uncategorised; here for when I have time to organise later!

Guide to writing X86-64 Assembly #macos

Reference - Sandpile - The world's leading source for technical x86 processor information.

Why no one should use the AT&T syntax ever, for any reason, under any circumstances (2021) #at&t

ELF: From The Programmer's Perspective (1995) #linux

Under the Hood (1998)

The Art of Assembly Language

https://www.csee.umbc.edu/portal/help/nasm/sample_64.shtml intel linux x86-64 nasm gcc gdb

🏫 https://www.cs.virginia.edu/~evans/cs216/guides/x86.html x86 intel

https://en.wikibooks.org/wiki/X86_Assembly

https://www.aldeid.com/wiki/Category:Architecture/x86-assembly

https://slideplayer.com/slide/9659147/

https://www.cs.princeton.edu/courses/archive/spr20/cos217/lectures/ https://www.cs.princeton.edu/courses/archive/spr11/cos217/lectures/15AssemblyFunctions.pdf


Hello World

; hello_world.asm

section .data
    msg       db     'Hello world!'
    nl        db     0x0a
    msgLen    equ    $-msg
section .text
global _start
_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msgLen
    syscall

    mov rax, 60
    mov rdi, 0
    syscall

About

Semi-organised collection of useful resources from my experience learning (...trying to learn?) assembly.

Topics

Resources

Stars

Watchers

Forks