You are on page 1of 15

ARM Processor

History
 Started in 1983 as a project for Acorn
Computers Ltd
 The original processor was an advanced
MOS Technology 6502 (an 8-bit
microprocessor designed by MOS
Technology in 1975 considered the least
expensive at the time
History
 ARM1
 Completed in 1985
 ARM2
 First “real” production systems
 32-bit data bus
 26-bit address space
 16 32-bit registers (one of these served as the program counter
 Only 30000 transistors
 Did not have microcode
 No cache
 Performed better than the 286
 4 million instructions per second
 ARM3
 Consisted of a 4kb cache
History
 In the late 1980’s Apple Computer started
working with Acorn and the company
became Advanced RISC Machines
 ARM6
 Apple used the ARM6-based ARM 610 as the
basis for the Apple Newton PDA
History
 ARM6
 35000 transistors
 ARM7TDMI
 Most successful implementation
 DEC licensed this design and produced the
StrongARM
 StrongARM
 233MHz
 Drew only 1 watt of power
 Took over by Intel in a lawsuit and since then Intel
developed the XScale (found in products such as the
Dell Axim)
History
 The following companies all licensed the basic
ARM design for various uses
 Motorola
 IBM
 Texas Instruments
 Nintendo
 Philips
 VLSI
 Sharp
 Samsung
Uses
 Hard-drives
 Mobile phones
 Routers
 Calculators
 Toys
 Accounts for over 75% of embedded
CPU’s
Introduction to ARM
 RISC design
 Most of the instructions can be executed in one
clock cycle
 Low power consumption (no heat sinks or fans
required)
 Easy to program
 Allows for pipelining
 Thumb
 NEON
 Jazelle
Registers
 16 registers (R0 to R15
 R13 – used for stack operations
 R14 – used for the link register (used for
storing return addresses in the
construction of sub routines
 R15 – the program counter
ARM Assembly
MODE 28 :REM If you have an A310 etc. try MODE 15
DIM mcode% 1024 :REM This line reserves 1024 bytes of memory
REM which start at position mcode%
P%=mcode% :REM P% is a reserved variable which acts as a pointer
REM while assembling the code
REM we wish the code to start at mcode%
[ :REM Note this is the square bracket (to the right
REM of the P key).
REM This tells BASIC to enter the ARM assembler, all
REM commands from now are in ARM assembler.
ADD R0,R1,R2 :REM Our ARM code instruction MOV PC,R14
:REM This instruction copies the value in R14 (link
REM register contains the return address to return to
REM BASIC) into the program counter hence
REM jumping to the next BASIC line after running
REM our ARM code program.
] :REM Leave the ARM code assembler and return to BASIC.
ARM Assembly
INPUT"Enter an integer value "B%
INPUT"Enter another integer value"C%
REM These two lines therefore will give their values to R1 and R2.
A%=USR(mcode%) :REM This line runs the ARM code starting
REM at mcode%
REM (our assembled code) returning the
REM value in R0 to BASIC.
PRINT"The answer is ";A% :REM Print the answer. END
ARM Assembly
MODE28
DIM mcode% 1024
P%=mcode%
[
ADD R0,R1,R2
MOV PC,R14
]
INPUT"Enter an integer value "B%
INPUT"Enter another integer value"C%
A%=USR(mcode%)
PRINT"The answer is ";A%
END
Listing
 00008FD8
 00008FD8 E0810002 ADD R0,R1,R2
 00008FDC 1A0F00E MOV PC,R14
Another Example
Code in C
int gcd(int i, int j) {
while (i != j)
if (i > j)
i -= j;
else
j -= i;
return i;
}
Another Example
 Assembly Code
b test
loop subgt Ri,Ri,Rj
suble Rj,Rj,Ri
test cmp Ri,Rj
bne loop

You might also like