Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • Feels like a disassembly of a boilerplate app, as opposed to handcrafted, minimal assembly code.

    For instance I’m pretty sure the autorelease pool is unnecessary as long as you don’t use the autorelease mechanism of Objective-C, which you’re most likely not going to do if you’re writing assembly in the first place.

    by Ecco
  • I’m guessing even this still requires that I use XCode.
  • Is that true? What about the command-line version?
  • It probably doesn't, as you practically never need Xcode for simple apps. From my experience, currently, you need Xcode to compile storyboards (NIB/XIB files) and bundle Assets.car (macOS BOM files); and compile Xcode projects, btw. I may be missing another important feature used in a lot of apps but otherwise for the most part you can build an iOS app without Xcode (or even macOS).
  • This kind of thing is how you actually learn what's under the hood. Everyone's building with React Native and Flutter, which is fine until something breaks. Then you're stuck Googling black magic. Starting from assembly teaches you the real cost of abstraction.
  • Complete bogus. This is programmers machismo that's completely detached from reality.
  • This is an excellent argument for not using assembly, actually
  • Assembly is fine until it breaks too
  • This is the most HN comment I’ve seen in a while. The real abstraction here is coding with LLMs btw!!!
  • All this teaches is how to put parameters on stack, pass them to functions and use the results. It is pretty much a transliteration of what you would do in C.
  • You still have whole Objective-C runtime and CoreAnimation, UIKit abstraction under the hood.
  • Is this really low level though? Because its hooking UIKit which is very high level relative to ASM. I'd be really curious to see an app draw on iOS without UIKit. I don't know if thats possible.
  • You have a very long way between assembly and RN/Flutter. I do agree that it helps to know these things, but you need to learn a lot more before it becomes more generally applicable.
  • Looks more sensible than having to use XCode and Apple's atrocious developer documentation.
  • Would love to see equivalent in C, not ObjectiveC... plain C.
  • That would be great if iOS supported a GUI in C.
  • Super cool! Would love to see the build/deploy steps needed.
  • xcrun -sdk iphoneos clang yellow.asm, pack it into an IPA and sign it
  • I just tested this on my computer.

      1. Make a new Xcode iOS project and delete all files except for Info.plist
      2. Remove all keys from Info.plist
      3. In the build settings search for "storyboard" and remove all keys
      4. Add yellow.asm to project
      5. Link UIKit, and Foundation
    
    After all that you can build and run on a simulator
    by zffr
  • Even better if build steps are provided
  • Very cool, if impractical (it’s likely that you’d never get an ASM app through the App Store Approval process).

    ARM Assembly is a much more Byzantine creature, than the old 8- and 16-bit versions I used, way back in the Pleistocene.

    I’m always a fan of starting from the “bare metal,” to learn, but these days, it’s a long trip. When I was just a wee sprog, it was only a couple of steps away.

  • It's likely in future, you won't need app store approval process. I hope that EU will nuke Apple with some huge fines.

    And there will be corporate tax per each EU country, it's ridiculous corporates are raking huge money here and paying basically nothing on taxes, well only in Ireland and they're having party.

    Anyway, asm is great if you are using iOS emulator and need to do something and since you have root there, well :) (not apple meme simulator)

  • How would that impact the App Store approval? AFAIK they review binaries anyway…
    by Ecco
  • When I was in second or third year of computer science in 1971 or '72, we (of course) learned IBM 360 assembler, but we also had to design a simple binary adder using AND OR and XOR gates. All on paper - no need for any soldering or electronics, which I regret. I cannot remember how many bits of input - probably 4 but may have been 6. But I did do quite a bit of asm programming, including a routine for calculating square roots using Chebyschev polynomials and newtons algorithm.
  • There is also an iOS app implemented in C here:

    https://stackoverflow.com/a/10290255/8427

  • snibbetracker is an example of a C/SDL iOS app. <1MB from the app store which is really wild. https://apps.apple.com/de/app/snibbetracker/id1065797528
  • For folks who are curious about this sort of thing and want an approachable starting point, I would recommend:

    https://www.goodreads.com/book/show/44882.Code

    It would be way cool to see an actual application which wanted this sort of speed optimization --- the last significant assembly language program I can recall using was WriteNow, which was ~100,000 lines of assembly and to this day is my favourite word-processor (well, the NeXT version --- the Mac, even v2.0 suffered in comparison for not having access to Display PostScript and Services).

    Really wish that there was a writeup of it at folklore.org --- unfortunately, it only gets a single mention:

    https://www.folklore.org/The_Grand_Unified_Model_The_Finder....

    (or that there was an equivalent site for the early history of NeXT)

  • The real optimization here is to move off UIKit and interact with the GPU more directly