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 |
Try searching by #tags - for example #beginner, #linux or #intel
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.
TutorialsPoint - NASM #beginner-friendly #tutorial #nasm #linux #intel
Let's Learn x86-64 Assembly! (2020) #beginner-friendly #windows #fasm #x86-64 #series #tutorial
- 0 - Setup and First Steps
- 1 - Metaprogramming in Flat Assembler
- 2 - We're Writing a Virtual Machine
- 3 - Arithmetic and Logic
🏫 NASM Tutorial #edu #nasm #tutorial #x86-64 #linux #macos #windows #beginner-friendly
⭐ Understanding Windows x64 Assembly, on 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
⚠️ Part 1 or 🔒 HTTPS via Outline.com⚠️ Part 2 or 🔒 HTTPS via Outline.com⚠️ Part 3 or 🔒 HTTPS via Outline.com
x86 assembly doesn’t have to be scary (2018) #introductory
ASM Tutor - Learn Assembly Language and on 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
🎥 Series - Modern x64 Assembly
🎥 HelloWorld in x86 and x64 Assembly Language (2021)
📄 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
TDD in Assembler (slides)
GitHub - asmtest - A script to help with unit testing assembly code, with JSON-based configuration.
X64 Linux Assembly Environment Setup
Ask HN: What's the best resource for learning modern x64 assembly?
r/rust - How to see the assembly code for rust code getting compiled
gnzlbg/cargo-asm - cargo subcommand showing the assembly or llvm-ir generated for Rust code
jeremydavis519/rusty-asm - A layer of syntactic sugar between Rust and inline assembly
Interacting with assembly in Rust
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
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