http://www.ic.unicamp.br/~celio/mc404-2012/armslides.html

ARM Architecture Overview

Ref: http://en.wikipedia.org/wiki/ARM_architecture

History

RISC features

Cpu modes

Registers

R0-R12 - General purpose
R13 - SP: Stack Pointer
R14 - LR: Link Register
R15 - PC: Program counter
R13-R14: banked on all modes, R8-R12 also in fast interrupt mode

Conditional execution

4-bit condition code selector on every instruction
Assembler: suffix to instruction mnemonics (see example below).
Example C code:

while(i != j) {   
       if (i > j)
           i -= j;
       else
           j -= i;
    }
Assembler code: 
        loop  CMP  Ri, Rj   ; set condition "NE" if (i != j),
                            ;               "GT" if (i > j),
                            ;            or "LT" if (i < j)
        SUBGT  Ri, Ri, Rj   ; if "GT" (greater than), i = i-j;
        SUBLT  Rj, Rj, Ri   ; if "LT" (less than), j = j-i;
        BNE  loop           ; if "NE" (not equal), then loop
 

Other features

Thumb instruction set

Coprocessors

Jazelle DBX (Direct Bytecode eXecution)

Hardware Debugging

Microsoft Operating Systems supporting ARM

Windows CE, Windows 8, Windows RT (this only for ARM)

Hello World assembler example:

    .data
    .align 2
Hello_message: .string "Hello World!"
    .text
    .align 2
    .global main
main:
    push {lr}	@ lr contains return address to OS
    ldr r0, =Hello_message
    bl puts
    pop {pc} 	@ return to OS