TinyGo
  • Getting Started
  • Documentation
  • Media
  • Documentation
    • Tutorials
      • Blinking LED
      • Using PWM
      • GDB
    • Guides
      • Build from source
      • Using WebAssembly
      • Linux support
      • Tips, Tricks and Gotchas
      • Contributing
        • Package organization
      • IDE Integration
        • VS Code
        • IntelliJ IDEA
        • Other IDEs
      • Debugging
      • Optimizing binaries
      • Tinygo flash errors
      • Porting code to TinyGo
    • Concepts
      • Compiler Internals
        • Microcontroller Targets
        • Interrupts
        • The volatile keyword
        • Inline assembly
        • Heap allocation
        • Datatypes
        • Calling convention
        • Differences from Go
        • Harvard architectures (AVR)
        • Pipeline
      • Peripherals
        • GPIO
        • I2C
      • FAQ
        • What is TinyGo exactly?
        • Why a new compiler?
        • Why Go instead of Rust?
        • What about the ESP8266/ESP32?
      • Drivers
      • Low Power
      • Package Organization
    • Reference
      • Using TinyGo
        • Basic command examples
        • Subcommands
        • Important Build Options
        • Misc. Build Options
      • Microcontrollers
        • Adafruit Circuit Playground Bluefruit
        • Adafruit Circuit Playground Express
        • Adafruit CLUE
        • Adafruit Feather M0
        • Adafruit Feather M4
        • Adafruit Feather M4 CAN
        • Adafruit Feather nRF52840 Express
        • Adafruit Feather nRF52840 Sense
        • Adafruit Feather RP2040
        • Adafruit Feather STM32F405 Express
        • Adafruit Grand Central M4
        • Adafruit ItsyBitsy M0
        • Adafruit ItsyBitsy M4
        • Adafruit ItsyBitsy nRF52840
        • Adafruit MacroPad RP2040
        • Adafruit Matrix Portal M4
        • Adafruit Metro M4 Express AirLift
        • Adafruit PyBadge
        • Adafruit PyGamer
        • Adafruit PyPortal
        • Adafruit Qt Py
        • Adafruit QT Py RP2040
        • Adafruit Trinket M0
        • Adafruit Trinkey QT2040
        • Arduino Mega 1280
        • Arduino Mega 2560
        • Arduino MKR WiFi 1010
        • Arduino MKR1000
        • Arduino Nano
        • Arduino Nano 33 BLE
        • Arduino Nano 33 BLE Sense
        • Arduino Nano 33 IoT
        • Arduino Nano RP2040 Connect
        • Arduino Uno
        • Arduino Zero
        • BBC micro:bit
        • Blues Wireless Swan
        • Digispark
        • Dragino LoRaWAN GPS Tracker LGT-92
        • ESP32 - Core board
        • ESP32 - mini32
        • ESP8266 - d1mini
        • ESP8266 - NodeMCU
        • Game Boy Advance
        • iLabs Challenger RP2040 LoRa
        • M5Stack
        • M5Stack Core2
        • M5Stamp C3
        • Makerdiary nRF52840-MDK
        • Makerdiary nRF52840-MDK USB Dongle
        • Microchip SAM E54 Xplained Pro
        • nice!nano
        • Nintendo Switch
        • Nordic Semiconductor PCA10031
        • Nordic Semiconductor PCA10040
        • Nordic Semiconductor PCA10056
        • Nordic Semiconductor PCA10059
        • Particle Argon
        • Particle Boron
        • Particle Xenon
        • Phytec reel board
        • Pimoroni Badger2040
        • Pimoroni Tufty2040
        • PineTime DevKit
        • PJRC Teensy 3.6
        • PJRC Teensy 4.0
        • ProductivityOpen P1AM-100
        • Raspberry Pi Pico
        • Seeed Seeeduino XIAO
        • Seeed Sipeed MAix Bit
        • Seeed Studio LoRa-E5 Development Kit
        • Seeed Wio Terminal
        • Seeed XIAO BLE
        • Seeed XIAO RP2040
        • SiFive HiFive1 Rev B
        • Sparkfun Thing Plus RP2040
        • ST Micro "Nucleo" F103RB
        • ST Micro "Nucleo" F722ZE
        • ST Micro "Nucleo" L031K6
        • ST Micro "Nucleo" L432KC
        • ST Micro "Nucleo" L552ZE
        • ST Micro STM32F103XX "Bluepill"
        • ST Micro STM32F407 "Discovery"
        • STM32 Nucleo WL55JC
        • Waveshare RP2040-Zero
        • X9 Pro Smartwatch
        • Machine package
          • arduino
          • arduino-mega1280
          • arduino-mega2560
          • arduino-mkr1000
          • arduino-mkrwifi1010
          • arduino-nano
          • arduino-nano33
          • arduino-zero
          • atsame54-xpro
          • badger2040
          • bluepill
          • challenger-rp2040
          • circuitplay-bluefruit
          • circuitplay-express
          • clue
          • d1mini
          • digispark
          • esp32-coreboard-v2
          • esp32-mini32
          • feather-m0
          • feather-m4
          • feather-m4-can
          • feather-nrf52840
          • feather-nrf52840-sense
          • feather-rp2040
          • feather-stm32f405
          • gameboy-advance
          • grandcentral-m4
          • hifive1b
          • itsybitsy-m0
          • itsybitsy-m4
          • itsybitsy-nrf52840
          • lgt92
          • lorae5
          • m5stack
          • m5stack-core2
          • m5stamp-c3
          • macropad-rp2040
          • maixbit
          • matrixportal-m4
          • metro-m4-airlift
          • microbit
          • nano-33-ble
          • nano-rp2040
          • nicenano
          • nodemcu
          • nrf52840-mdk
          • nrf52840-mdk-usb-dongle
          • nucleo-f103rb
          • nucleo-f722ze
          • nucleo-l031k6
          • nucleo-l432kc
          • nucleo-l552ze
          • nucleo-wl55jc
          • p1am-100
          • particle-argon
          • particle-boron
          • particle-xenon
          • pca10031
          • pca10040
          • pca10056
          • pca10059
          • pico
          • pinetime-devkit0
          • pybadge
          • pygamer
          • pyportal
          • qtpy
          • qtpy-rp2040
          • reelboard
          • stm32f4disco
          • swan
          • teensy36
          • teensy40
          • thingplus-rp2040
          • trinket-m0
          • trinkey-qt2040
          • tufty2040
          • waveshare-rp2040-zero
          • wioterminal
          • x9pro
          • xiao
          • xiao-ble
          • xiao-rp2040
      • Devices
      • machine package
      • Go language features
        • Packages supported by TinyGo
Edit this page Create child page Create documentation issue Create project issue
  1. Documentation
  2. Concepts
  3. Compiler Internals

Compiler Internals

Want to learn how TinyGo works? We break it all down for you here.

Microcontroller Targets

Interrupts

The volatile keyword

Inline assembly

Heap allocation

Datatypes

Calling convention

Differences from Go

Harvard architectures (AVR)

Pipeline

Last modified May 3, 2021: This very large commit switches to using Docsy theme for site, as well as also reorganizing the site content to fit the structure from the system defined by https://documentation.divio.com/ (bc59555)
© 2023 The TinyGo Authors All Rights Reserved