Product Support

Pocket ARM

ARMv7 Assembly Simulator for iOS
Version 1.0 iOS 16.0+ iPhone & iPad ↗ App Store

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

MOV / MVN
Move / Move Not
ADD / ADC
Add / Add with Carry
SUB / SBC
Subtract / Sub with Carry
RSB
Reverse Subtract
MUL
Multiply
AND / ORR
Bitwise AND / OR
EOR / BIC
XOR / Bit Clear
CMP / CMN
Compare / Compare Neg
TST / TEQ
Test bits / Test Equiv
LSL / LSR
Logical Shift Left/Right
ASR / ROR
Arith Shift / Rotate Right
LDR / LDRB
Load Word / Byte
STR / STRB
Store Word / Byte
PUSH / POP
Stack operations
B / BL
Branch / Branch with Link
BX / BLX
Branch Exchange
BEQ BNE BLT
Conditional branches
BGT BLE BGE
Conditional branches
BCS BCC
Carry Set / Clear branch
BMI BPL
Minus / Plus branch
SVC
Supervisor Call
NOP
No Operation

All data-processing instructions support the full ARM condition suffix set and the S flag for CPSR update.

Known Issues & Roadmap

Planned
File management & demo library Save programs to the iOS Documents folder, load built-in demo programs, and share .s files via the Files app.
Planned
Syntax highlighting Colour-coded mnemonics, registers, immediates, and comments in the source editor.
Planned
Thumb / Thumb-2 mode 16-bit Thumb instruction set with interworking via BX.
Planned
Symbol table panel Display all resolved label addresses after assembly.
Fixed 1.0
SVC parsed as condition code SVC was incorrectly stripped of the VC (overflow clear) condition suffix, causing assembly failure.
Fixed 1.0
Line numbers offset in error messages Assembly errors were reported on the wrong line number when comments preceded instructions.

Version History

1.0
2026
Initial release. Full ARMv7 UAL assembler and step executor, quad-pane iPad layout, iPhone tab layout, phosphor-green CRT interface, CPSR flag display, breakpoints, hex memory viewer, SVC console output.

Contact Support

You can also email us directly at support@pymblesoftware.com