Your first program

The embedded “hello world” is a blinking LED. We will build it twice: once by writing to hardware registers directly, and once using the standard library, so you can see both levels the language operates at.

What just happened

  • The target line told the compiler everything device-specific.

  • @main was the entry point; the compiler generated the vector table and startup code around it.

  • You reached hardware either directly through % register aliases or through library functions that wrap those same registers.

  • There was no heap, no malloc, and no runtime — every line maps to a fixed, predictable instruction sequence.

The next page tours the language features you will use to write something more interesting than a blink.