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.
How would that impact the App Store approval? AFAIK they review binaries anyway…
Hello-World iOS App in Assembly
41–50 of 62 posts
Re: Hello-World iOS App in Assembly
#42Earlier quoted context omitted.
It should be possible. If you enable the JIT entitlement for personal development, then bundle a mach-o into an entitled app. Or compile it directly on the app and mprotect-x to execute it. Is there something else you can’t do that I’m not considering? I might give this a try.
The point is what is possible within the constrains of public APIs.
Looking at unistd.h, it seems marked as
__OS_AVAILABILITY_MSG(ios,deprecated=10.0,"syscall(2) is unsupported; "
"please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")
and syscall numbers seem wrapped by #ifdef __APPLE_API_PRIVATE
in *Re: Hello-World iOS App in Assembly
#43Earlier quoted context omitted.
<1MB is also relatively easy to reach with swiftui apps. I had two fully working ones in the app store below 1MB. They are removed now since I didnt pay the yearly 100€
Do you need to pay the license to keep your apps in store? Or did they deprecate some APIs and therefore removed your apps? Honestly wild if you need to upkeep the license just to have it in store once it is published.
Re: Hello-World iOS App in Assembly
#44Re: Hello-World iOS App in Assembly
#45Re: Hello-World iOS App in Assembly
#46Earlier quoted context omitted.
The point is what is possible within the constrains of public APIs.
Is syscall a public API on iOS? In the end, you have to call that to get anything on the screen? Looking at unistd.h , it seems marked as __OS_AVAILABILITY_MSG(ios,deprecated=10.0,"syscall(2) is unsupported; " "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().") and syscall numbers seem wrapped by #ifdef __APPLE_API_PRIVATE in *
All other modern OSes give zero guarantees about syscalls.
Indeed, you have to call UI Kit, that is the public API for userspace applications.
Even if via OpenGL ES or Metal, you need a drawing context and a Window to render it.
Re: Hello-World iOS App in Assembly
#47This 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.
Re: Hello-World iOS App in Assembly
#48Earlier quoted context omitted.
How would that impact the App Store approval? AFAIK they review binaries anyway…
They do, but ASM doesn't have the guardrails that the compiled languages have, so it's almost certain that private APIs would get accessed.
Re: Hello-World iOS App in Assembly
#49Re: Hello-World iOS App in Assembly
#50This 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.
But none the less valuable because of the additional perspective it brings. That's the real point of it, another lens through which to view and understand the mechanics of the application.