Low Level Learning
EORccS Rn, Rm, Op2 |
Logically Exclusive OR Op2 with Rm and store the result in Rn . |
EOR R0,R0,#4 |
EOR
keeps dependencies, so it can’t be executed out of order on a CPU that can OoO execute themov
fromxzr
arm-none-eabi-as start.s -o start.o arm-none-eabi-ld start.o -o kernel.elf arm-none-eabi-objcopy kernel.elf -O binary kernel7.img
default: arm-none-eabi-as -o start.o start.s arm-none-eabi-gcc -c -o main.o main.c -I ./include arm-none-eabi-gcc -T linker.ld -o kernel7.elf start.o main.o -ffreestanding -O2 -nostdlib -lgcc arm-none-eabi-objcopy kernel7.elf -O binary kernel7.img
github.com/lowlevellearning/raspberry-pi-baremetal
github.com/lowlevellearning/raspberry-pi-baremetal-c
The TWO Programming Languages EVERY Beginner Should Start With (to learn how to code fast), C and Python
Baremetal Assembly Raspberry Pi Programming | Direct to Register Blink LED, No Operating System
Raspberry Pi C/C++ Baremetal Programming | Using C to Direct-Register Control Your Raspberry Pi
BAREMETAL RUST Runs on EVERYTHING, Including the Raspberry Pi | Embedded Rust Tutorial
Azeria Labs
ARM Assembly Basics
- Writing ARM Assembly
- ARM Data Types and Registers
- ARM Instruction set
- Memory Instructions: Load and Store
- Load and Store Multiple
- Conditional Execution and Branching
- Stack and Functions
- Assembly Basics Cheatsheet
INTRODUCTION TO ARM ASSEMBLY BASICS
DATA TYPES
ARM & THUMB
MEMORY INSTRUCTIONS: LOAD AND STORE
LOAD/STORE MULTIPLE
CONDITIONAL EXECUTION
STACK AND FUNCTIONS/a>
ARM ASSEMBLY BASICS CHEATSHEET
ARM Exploit Development
- Writing ARM Shellcode
- TCP Bind Shell (ARM 32-bit)
- TCP Reverse Shell (ARM 32-bit)
- Process Memory and Memory Corruption
- Stack Overflows (Arm32)
- Return Oriented Programming (Arm32)
- Stack Overflow Challenges
- Process Continuation Shellcode
- Introduction to Glibc Heap (malloc)
- Introduction to Glibc Heap (free, bins)
- Heap Exploit Development (Part 1)
- Heap Overflows and iOS Kernel (Part 2)
- Grooming the iOS Kernel Heap (Part 3)