# below/hellosilicon

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/below-hellosilicon).**

4,967 stars · 329 forks · Assembly · MIT

## Links

- GitHub: https://github.com/below/HelloSilicon
- awesome-repositories: https://awesome-repositories.com/repository/below-hellosilicon.md

## Topics

`aarch64` `apple` `apple-silicon` `arm` `arm64` `assembler` `assembly` `clang-assembler` `darwin` `ios` `m1` `mach-o` `macos`

## Description

HelloSilicon is a programming guide and tutorial for writing and debugging low-level 64-bit assembly code specifically for Apple Silicon processors. It serves as an architecture reference for interacting with macOS and iOS kernel services using system calls and hardware registers.

The project provides specialized instruction on foreign function interfacing to bridge assembly with high-level languages like C or Python. It also includes a toolkit for configuring Mach-O binaries and compiling universal binaries and dynamic libraries for cross-hardware compatibility.

The material covers low-level system programming, including memory addressing, calling conventions, and the use of debuggers to inspect registers and memory.

## Tags

### Education & Learning Resources

- [Apple Silicon Programming Guides](https://awesome-repositories.com/f/education-learning-resources/apple-silicon-programming-guides.md) — Serves as a comprehensive instructional guide for interacting with macOS and iOS kernel services on Apple Silicon.
- [ARMv8 Assembly Programming Education](https://awesome-repositories.com/f/education-learning-resources/armv8-assembly-programming-education.md) — Provides structured examples and tutorials for learning to write low-level machine instructions for the ARM64 architecture. ([source](https://github.com/below/hellosilicon#readme))
- [Assembly](https://awesome-repositories.com/f/education-learning-resources/language-learning-resources/assembly.md) — Offers educational materials and tutorials for mastering low-level 64-bit ARM assembly programming.

### Operating Systems & Systems Programming

- [Apple Silicon Systems Programming](https://awesome-repositories.com/f/operating-systems-systems-programming/apple-silicon-systems-programming.md) — Serves as a comprehensive guide for writing and debugging low-level assembly targeted at Apple Silicon hardware.
- [ARM64 Architecture References](https://awesome-repositories.com/f/operating-systems-systems-programming/arm64-architecture-references.md) — Provides an architecture reference for ARM64 calling conventions and memory addressing to bridge assembly with high-level languages.
- [ARMv8 Assembly Programming](https://awesome-repositories.com/f/operating-systems-systems-programming/armv8-assembly-programming.md) — Offers a guide for writing and optimizing 64-bit assembly code specifically for Apple Silicon processor architectures. ([source](https://github.com/below/hellosilicon#readme))
- [Direct System Call Invocations](https://awesome-repositories.com/f/operating-systems-systems-programming/direct-system-call-invocations.md) — Provides techniques for invoking Darwin kernel functions directly using specific registers to bypass user-mode API hooks. ([source](https://github.com/below/hellosilicon#readme))
- [High-Level Language Assembly Integration](https://awesome-repositories.com/f/operating-systems-systems-programming/high-level-language-assembly-integration.md) — Implements platform-specific calling conventions to bridge low-level assembly code with high-level languages like C or Python. ([source](https://github.com/below/hellosilicon#readme))
- [Low-Level Systems Programming](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/memory-allocation-libraries/low-level-system-operations/low-level-systems-programming.md) — Provides detailed instruction on writing assembly for precise hardware control and performance-critical system programming.
- [System Call Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-calls/system-call-mapping/system-call-interfaces.md) — Explains how to use hardware registers and function numbers to request kernel services on macOS and iOS.
- [Binary Linkers](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-linkers.md) — Uses an assembler and linker to resolve symbols and manage memory layouts for compatible Mach-O binaries. ([source](https://github.com/below/hellosilicon#readme))

### Programming Languages & Runtimes

- [Foreign Function Interfaces](https://awesome-repositories.com/f/programming-languages-runtimes/foreign-function-interfaces.md) — Bridges low-level assembly functions with high-level languages like C or Python using platform-specific calling conventions.
- [Calling Conventions](https://awesome-repositories.com/f/programming-languages-runtimes/function-argument-passing/calling-conventions.md) — Provides detailed instruction on ARM64 register and stack rules for function calls to bridge assembly with high-level languages.
- [Binary Configuration](https://awesome-repositories.com/f/programming-languages-runtimes/binary-parsing/mach-o/binary-configuration.md) — Provides a toolkit for configuring Mach-O binaries with specific entry points and system libraries.
- [Binary Configuration Toolkits](https://awesome-repositories.com/f/programming-languages-runtimes/binary-parsing/mach-o/binary-configuration-toolkits.md) — Includes a toolkit for configuring Mach-O binaries and compiling universal binaries and dynamic libraries.

### System Administration & Monitoring

- [Assembly Debuggers](https://awesome-repositories.com/f/system-administration-monitoring/assembly-debuggers.md) — Teaches how to use debuggers like LLDB to inspect registers, manage breakpoints, and read memory during execution. ([source](https://github.com/below/hellosilicon#readme))

### Data & Databases

- [Offset-Based Addressing](https://awesome-repositories.com/f/data-databases/pointer-based-navigation/offset-based-addressing.md) — Demonstrates how to access nonlocal data by calculating relative offsets from a base page in the writable section.

### Development Tools & Productivity

- [Dependency Linkers](https://awesome-repositories.com/f/development-tools-productivity/dependency-linkers.md) — Covers the final build stage of connecting object files with system libraries to resolve external symbol references.
- [Universal Binary Compilation](https://awesome-repositories.com/f/development-tools-productivity/universal-binary-compilation.md) — Instructs on packaging multiple architecture-specific machine code versions into a single executable for cross-hardware compatibility.

### DevOps & Infrastructure

- [Universal Binary Packaging](https://awesome-repositories.com/f/devops-infrastructure/deployment-management-strategies/automation-and-tooling/deployment-tooling/macos-binary-signing/universal-binary-packaging.md) — Explains the process of creating app bundles containing binaries for multiple CPU architectures, such as Intel and Apple Silicon.

### Game Development

- [Data Section Access](https://awesome-repositories.com/f/game-development/simulation-engines/entity-simulation-engines/data-access-optimizations/offset-based-data-access/data-section-access.md) — Provides instructions for reading and writing data stored in the writable data section using page-offset addressing. ([source](https://github.com/below/hellosilicon#readme))
