Hello-World iOS App in Assembly

iPhone app coded in assembly has devs begging for build steps

TLDR: A developer posted a “Hello World” iPhone app written in assembly, proving you can go ultra low‑level on iOS. Comments split between craving build instructions and debating whether Xcode is still required, with a helpful link to a C version and cheers for learning what’s under the hood.

An internet braveheart just wrote a tiny iPhone app in assembly—the language that whispers straight to the chip. The code manually sets up the app, names its own “AppDelegate,” and kicks off Apple’s app launcher. It’s like making a latte by roasting the beans yourself, and the comments went wild.

Top vibe: curiosity with a side of panic. Multiple voices begged, “please share the build/deploy steps,” because yes, it’s gorgeous… but how do we actually run it? The practical crowd asked whether you still need Apple’s Xcode tool (the official iPhone app builder), and the mood was, “probably, sorry.” Meanwhile, the hardcore camp cheered that starting from assembly teaches the real cost of abstraction—when frameworks break, you’ll actually know what’s going on. For folks not ready to live at the chip level, JimDabell dropped a link to a similar iOS app in C, a more familiar route.

Drama-wise, it’s Swifties vs. Bare‑Metalheads: convenience versus purity. Jokes flew about summoning app demons with ancient runes and React Native devs clutching snackbars. The consensus? It’s super cool, but without a step‑by‑step, it’s art you can’t hang. And yes, everyone wants to know if you can escape Xcode—most think you can’t, at least not without pain. Teach us the spellbook, wizard!

Key Points

  • The code defines an iOS app entry point (_main) entirely in ARM64 assembly, handling stack and register management.
  • An autorelease pool is created and later popped using Objective-C runtime functions to manage memory.
  • A custom AppDelegate class is dynamically created via objc_allocateClassPair, given the UIApplicationDelegate protocol, and a didFinishLaunching method.
  • UIApplicationMain is invoked with argc/argv, a nil principal class, and a CFString naming the delegate class.
  • The didFinishLaunching implementation demonstrates selector retrieval and messaging to UIScreen to obtain the main screen and its bounds.

Hottest takes

"Would love to see the build/deploy steps" — starmole
"Starting from assembly teaches you the real cost of abstraction" — sanskarix
"Still requires that I use XCode" — azhenley
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.