Frequently Asked Questions
What is Pocket ARM?
Pocket ARM is a complete ARMv7 UAL assembly simulator for iPhone and iPad. You write ARM assembly source code, assemble it, then step through execution — watching all 16 CPU registers, the CPSR status flags, and memory update in real time.
It is designed for computer science students, embedded developers, and anyone curious about how processors really work at the instruction level.
How do I write and run a program?
1. Tap the SOURCE tab and write (or edit) ARM assembly in the editor. Comments begin with @ or ;.
2. Tap ASSEMBLE. Any errors appear in the console and are highlighted with red line numbers.
3. Once assembled, tap RUN to execute, or STEP to execute one instruction at a time. Watch the REGISTERS tab to see values change after each step.
4. Tap DISASM (next to SOURCE) to see the assembled instructions. The currently executing instruction is highlighted in cyan.
How do breakpoints work?
Switch to the DISASM tab. Tap the small circle in the left gutter next to any instruction to set a breakpoint — it turns red. Tap again to clear it.
When you tap RUN, execution will pause automatically when the program counter reaches a breakpointed instruction, giving you a chance to inspect registers and memory.
What does SVC do?
SVC #0 — prints the current value of R0 to the Console tab as both a decimal and hexadecimal number.
SVC #1 — halts execution (program exit).
These are simulator-specific SVC calls, not real Linux/iOS system calls.
What does RESET do vs CLEAR?
RESET resets all registers to zero (SP to 0x8000), reloads the assembled program into memory, and sets the PC back to the start. Your source code and assembled instructions are preserved — ready to run again.
CLEAR does a full reset: clears registers, memory, instructions, console, and source code. Use it to start fresh.
What does the CPSR panel show?
The CPSR (Current Program Status Register) shows the seven status flags ARM uses to track the result of the last operation:
N — Negative Z — Zero C — Carry V — Overflow
I — IRQ disable F — FIQ disable T — Thumb mode
Flags that changed on the last instruction glow amber. Instructions that set the CPSR use the S suffix, e.g. SUBS, ADDS, MOVS.
Why does my branch not jump to the right place?
Make sure your label ends with a colon in the source, e.g. LOOP: on its own line or immediately before the instruction. Labels are case-insensitive — loop: and LOOP: are the same.
The branch offset is calculated at assemble time, so if you edit the source after assembling, tap ASSEMBLE again before running.
What register display modes are available?
Tap any register row or the HEX / DEC / BIN toggle bar at the bottom of the Registers panel to cycle between:
HEX — 32-bit hexadecimal (e.g. 0x00000022)
DEC — signed 32-bit decimal
BIN — 32-bit binary in four groups of 8
Does Pocket ARM support Thumb / ARM64?
Version 1.0 supports 32-bit ARMv7 UAL (Unified Assembly Language) only. Thumb and Thumb-2 interworking, and AArch64 (ARM64), are planned for a future release.
Supported Instructions
All data-processing instructions support the full ARM condition suffix set and the S flag for CPSR update.
Known Issues & Roadmap
.s files via the Files app.
Version History
Contact Support
You can also email us directly at support@pymblesoftware.com