arm winter sem

Upload: adarsh-vr

Post on 03-Jun-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/12/2019 ARM Winter Sem

    1/112

    1TM

    T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    ARM Advanced RISC Machines

    Advanced RISC Machines

  • 8/12/2019 ARM Winter Sem

    2/112

  • 8/12/2019 ARM Winter Sem

    3/112

    3TM

    3

    T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    ARM Partnership Model

  • 8/12/2019 ARM Winter Sem

    4/112

    4TM

    4

    T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    ARM Powered Products

  • 8/12/2019 ARM Winter Sem

    5/112

    5TM

    5

    T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    History of the ARM Processor

    ARM1 ,ARM2 .. ARM 7

    ARM9, ARM10 ,ARM11

    CORTEX

  • 8/12/2019 ARM Winter Sem

    6/112

    6TM

    6

    T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    The ARM CoreWhat is meant by the core?

    The core is the processing unit or thecomputing engine.

    It has all the computing power, and thisaspect is decided by the architecture,which represents the basic design of theprocessor.

  • 8/12/2019 ARM Winter Sem

    7/1127TM 7T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    ARM provides hard and soft views to licenceesRTL and synthesis flowsGDSII layout

    Licencees have the right to use hard or soft views of the IPsoft views include gate level netlistshard views are DSMs

    OEMs must use hard viewsto protect ARM IP

    Intellectual Property

  • 8/12/2019 ARM Winter Sem

    8/1128TM 8T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    THE RISC ARCHITECTURE

    These apply to most of the instructionsof ARM, but

    not necessarily to all.

    i) Instructions are of the same size, thatis, 32 bits

    ii) Instructions are executed in one cycleiii) Only the load and store instructionsaccess memory

  • 8/12/2019 ARM Winter Sem

    9/1129TM 9T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    10/11210TM 10T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    The ARM Microcontroller

    It is ARM core with peripherals added toit.

  • 8/12/2019 ARM Winter Sem

    11/11211TM 11T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    12/11212TM 12T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    13/11213TM 13T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    14/11214TM 14T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    15/11215TM 15T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    16/11216TM 16T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Features of ARM which make it special

    Data bus width

    Computational capability

    Low PowerPipelining

    Multiple Register instructionsDSP Enhancements

  • 8/12/2019 ARM Winter Sem

    17/11217TM 17T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    ARCHITECTURE

    A large Uniform Register File

    Load Store Architecture

    Uniform and Fixed Length instructions

    Good speed and low power consumption

    High Code density

  • 8/12/2019 ARM Winter Sem

    18/11218TM 18T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    ENHANCEMENT FROM RISC

    Control over ALU and shifter over everydata processing instructions to maximizetheir usage

    Auto increment and auto decrementaddressing modes

    Multiple load store instructions

    Conditional execution of instruction tomaximize throughput

  • 8/12/2019 ARM Winter Sem

    19/11219TM 19T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Data items are placed in register fileInstructions use two source registersand single destination register

    Barrel shifter can preprocess the databefore going to ALU

    Increment/Decrement logic updateregister content to provide sequentialaccess independent of ALU

    Core Data Path : Overview

  • 8/12/2019 ARM Winter Sem

    20/112

  • 8/12/2019 ARM Winter Sem

    21/11221TM 21T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    22/11222TM 22T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    General purpose registers either hold data or Address

    All registers:32 bit

    In user mode 16 data registers and 2 status registersare visible

    Data registers r0-r15

    r13,r14,r15 :special functions

    r13 : Stack pointerr14 : Link registerr15 :PC

    REGISTERS

  • 8/12/2019 ARM Winter Sem

    23/112

    23TM 23T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    When the processor is executing in ARM state: All instructions are 32 bits wide All instructions must be word alignedTherefore the pc value is stored in bits [31:2] with bits [1:0] undefined (asinstruction cannot be halfword or byte aligned).

    When the processor is executing in Thumb state: All instructions are 16 bits wide All instructions must be halfword alignedTherefore the pc value is stored in bits [31:1] with bit [0] undefined (asinstruction cannot be byte aligned).

    When the processor is executing in Jazelle state: All instructions are 8 bits wideProcessor performs a word access to read 4 instructions at once

    Program Counter (r15)

  • 8/12/2019 ARM Winter Sem

    24/112

    24TM 24T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Data Alignment

  • 8/12/2019 ARM Winter Sem

    25/112

    25TM 25T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Data Alignment

    For word (32-bit ) the specified address

    have its least significant 2 bits as 0For half word (16-bit ) the specifiedaddress have its least significant bit as 0

  • 8/12/2019 ARM Winter Sem

    26/112

    26TM 26T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    CPSR :Current program Status register

    SPSR : Saved Program Status register

    STATUS REGISTERS

  • 8/12/2019 ARM Winter Sem

    27/112

    27TM 27T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Program Status Registers

    Condition code flagsN = Negative result from ALUZ = Zero result from ALUC = ALU operation Carried outV = ALU operation o Verflowed

    Sticky Overflow flag - Q flag Architecture 5TE/J onlyIndicates if saturation has occurred

    J bit Architecture 5TEJ onlyJ = 1: Processor in Jazelle state

    Interrupt Disable bits.I = 1: Disables the IRQ.F = 1: Disables the FIQ.

    T Bit Architecture xT onlyT = 0: Processor in ARM stateT = 1: Processor in Thumb state

    Mode bitsSpecify the processor mode

    2731

    N Z C V Q

    28 67

    I F T mode

    1623 815 5 4 024

    f s x c U n d e f i n e dJ

  • 8/12/2019 ARM Winter Sem

    28/112

    28TM 28T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Processor mode determine Access rights to CPSR

    Which registers are active

    Each processor mode is eitherPrivileged : Full read write access to the CPSR

    Non-Privileged : Only read access to the control fieldof CPSR but read write access to conditional flags

    Processor Modes

  • 8/12/2019 ARM Winter Sem

    29/112

    29TM 29T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Processor Modes

    The ARM has seven basic operating modes:

    User : unprivileged mode under which most tasks run

    FIQ : entered when a high priority (fast) interrupt is raised

    IRQ : entered when a low priority (normal) interrupt is raised

    Supervisor : entered on reset and when a Software Interruptinstruction is executed

    Abort : used to handle memory access violations

    Undef : used to handle undefined instructions

    System : privileged mode using the same registers as user mode

  • 8/12/2019 ARM Winter Sem

    30/112

    30TM 30T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Register File contains in all 37 registers20 registers are hidden from program at different timesThese registers are called Bank ed Regis ters

    Banked Registers are available onlywhen the processor in a particular mode

    Processors Mode other than system mode have a setof banked register that are subset of 16 registersMaps one-to-one onto a user mode register

    Banked Registers

  • 8/12/2019 ARM Winter Sem

    31/112

    31TM 31T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    r0

    r1

    r2

    r3

    r4

    r5

    r6

    r7

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    r15 (pc)

    cpsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    spsr

    FIQ IRQ SVC Undef Abort

    User Mode r0

    r1

    r2

    r3

    r4

    r5

    r6

    r7

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    r15 (pc)

    cpsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    spsr

    Current Visible Registers

    Banked out Registers

    FIQ IRQ SVC Undef Abort

    r0

    r1

    r2

    r3

    r4

    r5

    r6

    r7

    r15 (pc)

    cpsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    spsr

    Current Visible Registers

    Banked out Registers

    User IRQ SVC Undef Abort

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    FIQ Mode IRQ Mode r0

    r1

    r2

    r3

    r4

    r5

    r6

    r7

    r8

    r9

    r10

    r11

    r12

    r15 (pc)

    cpsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    spsr

    Current Visible Registers

    Banked out Registers

    User FIQ SVC Undef Abort

    r13 (sp)

    r14 (lr)

    Undef Mode r0

    r1

    r2

    r3

    r4

    r5

    r6

    r7

    r8

    r9

    r10

    r11

    r12

    r15 (pc)

    cpsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    spsr

    Current Visible Registers

    Banked out Registers

    User FIQ IRQ SVC Abort

    r13 (sp)

    r14 (lr)

    SVC Mode r0

    r1

    r2

    r3

    r4

    r5

    r6

    r7

    r8

    r9

    r10

    r11

    r12

    r15 (pc)

    cpsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    spsr

    Current Visible Registers

    Banked out Registers

    User FIQ IRQ Undef Abort

    r13 (sp)

    r14 (lr)

    Abort Mode r0

    r1

    r2

    r3

    r4

    r5

    r6

    r7

    r8

    r9

    r10

    r11

    r12

    r15 (pc)

    cpsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r13 (sp)

    r14 (lr)

    spsr

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    spsr

    Current Visible Registers

    Banked out Registers

    User FIQ IRQ SVC Undef

    r13 (sp)

    r14 (lr)

    The ARM Register Set

  • 8/12/2019 ARM Winter Sem

    32/112

    32TM 32T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Register Organization Summary

    User moder0-r7,

    r15,and

    cpsr

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)

    spsr

    FIQ

    r8

    r9

    r10

    r11

    r12

    r13 (sp)

    r14 (lr)r15 (pc)

    cpsr

    r0r1

    r2

    r3

    r4

    r5

    r6

    r7

    User

    r13 (sp)

    r14 (lr)

    spsr

    IRQ

    User mode

    r0-r12,r15,

    andcpsr

    r13 (sp)

    r14 (lr)

    spsr

    Undef

    User mode

    r0-r12,r15,

    andcpsr

    r13 (sp)

    r14 (lr)

    spsr

    SVC

    User mode

    r0-r12,r15,

    andcpsr

    r13 (sp)

    r14 (lr)

    spsr

    Abort

    User mode

    r0-r12,r15,

    andcpsr

    Thumb stateLow registers

    Thumb stateHigh registers

    Note: System mode uses the User mode register set

  • 8/12/2019 ARM Winter Sem

    33/112

  • 8/12/2019 ARM Winter Sem

    34/112

    34TM 34T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    SPSR present in every privileged modeexcept system mode

    Save the state of CPSR when theprivileged mode is entered so that theuser state is fully restored when theprocess is resumed

    SPSR

  • 8/12/2019 ARM Winter Sem

    35/112

    35TM 35T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    INTERRUPT VECTOR TABLE

  • 8/12/2019 ARM Winter Sem

    36/112

    36TMT H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Programming with Assemblyand C .

  • 8/12/2019 ARM Winter Sem

    37/112

  • 8/12/2019 ARM Winter Sem

    38/112

    38TM 38T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Data Formats

  • 8/12/2019 ARM Winter Sem

    39/112

    39TM 39T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Instruction Set

  • 8/12/2019 ARM Winter Sem

    40/112

    40TM 40T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Manipulate data within registersMOVE instructions

    Arithmetic Instructions

    Logical instructionsComparison Instructions

    Suffix S on data processing instructions

    updates flags in CPSR

    Data processing Instructions

  • 8/12/2019 ARM Winter Sem

    41/112

    41TM 41T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Operands are 32-bit wide come fromregisters or specified as literals in the

    instruction itselfSecond operand placed in ALU via Barrelshifter

    Data processing Instructions

  • 8/12/2019 ARM Winter Sem

    42/112

    42TM 42T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    MOV and MVN-Examples

  • 8/12/2019 ARM Winter Sem

    43/112

    43TM 43T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Shift and Rotate

  • 8/12/2019 ARM Winter Sem

    44/112

    44TM 44T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    45/112

    45TM 45T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    46/112

    46TM 46T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Combining Mov and Shift

  • 8/12/2019 ARM Winter Sem

    47/112

    47TM 47T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    48/112

    48TM 48T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Conditional Execution

  • 8/12/2019 ARM Winter Sem

    49/112

    49TM 49T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    h

  • 8/12/2019 ARM Winter Sem

    50/112

    50TM 50T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Arithmetic Instructions

  • 8/12/2019 ARM Winter Sem

    51/112

    51TM 51T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    52/112

    52TM 52T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    53/112

    53TM 53T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    54/112

    54TM 54T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    L i l I i

  • 8/12/2019 ARM Winter Sem

    55/112

    55TM 55T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Logical Instructions

  • 8/12/2019 ARM Winter Sem

    56/112

    56TM 56T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    57/112

    57TM 57T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    C I t ti

  • 8/12/2019 ARM Winter Sem

    58/112

    58TM 58T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Compare Instructions

    M lti l I t ti

  • 8/12/2019 ARM Winter Sem

    59/112

    59TM 59T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Multiply content of a pair of registers

    Long multiply generates 64 bit result

    MUL r0,r1,r2Contents of r1 and r2 multiplied and put in r0

    UMULL r0,r1,r2,r3Unsigned long multiply with result stored inr0 and r1

    Multiply Instructions

    Multiplication

  • 8/12/2019 ARM Winter Sem

    60/112

    60TM 60T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Multiplication

    Multiplication Examples

  • 8/12/2019 ARM Winter Sem

    61/112

    61TM 61T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Multiplication -Examples

    Multiply and Accumulate

  • 8/12/2019 ARM Winter Sem

    62/112

    62TM 62T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Result of multiplication can beaccumulated with content of anotherregister

    MLA Rd ,Rm,Rs,RnRd =(Rm*Rs)+Rn

    UMLAL Rdlo,Rdhi,Rm,Rs[Rdlo,Rdhi] = [Rdlo,Rdhi,]+ (Rm*Rs)

    Multiply and Accumulate

  • 8/12/2019 ARM Winter Sem

    63/112

    Directives AREA and ENTRY-

  • 8/12/2019 ARM Winter Sem

    64/112

    64TM 64T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Examples

    General Structure of an assembly

  • 8/12/2019 ARM Winter Sem

    65/112

    65TM 65T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Language Line

    Directives for Defining data

  • 8/12/2019 ARM Winter Sem

    66/112

    66TM 66T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Directives for Defining data

    The EQU directive Examples

  • 8/12/2019 ARM Winter Sem

    67/112

    67TM 67T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    The EQU directive -Examples

    Constants allowed

  • 8/12/2019 ARM Winter Sem

    68/112

    68TM 68T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Constants allowed

    The RN directive-for naming

  • 8/12/2019 ARM Winter Sem

    69/112

    69TM 69T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    registers

    Assembly Programs

  • 8/12/2019 ARM Winter Sem

    70/112

    70TM 70T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Assembly Programs

    Solution

  • 8/12/2019 ARM Winter Sem

    71/112

    71TM 71T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Solution

    Branch Instructions

  • 8/12/2019 ARM Winter Sem

    72/112

    72TM 72T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Branch Instructions

    Branch instruction usage -

  • 8/12/2019 ARM Winter Sem

    73/112

    73TM 73T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    examples

  • 8/12/2019 ARM Winter Sem

    74/112

    Division by repeated subtraction

  • 8/12/2019 ARM Winter Sem

    75/112

    75TM 75T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Division by repeated subtraction

    Subroutines/Procedures using the Link register

  • 8/12/2019 ARM Winter Sem

    76/112

    76TM 76T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    There is a form of the branch instruction

    which is BL standing forBranch and Link.

    When a BL instruction is encountered,the PC value is changed to that of thetarget, but the old PC value is copied tothe LR register.

    At the end of the procedure, the LR valuecan be copied back to the PC.

  • 8/12/2019 ARM Winter Sem

    77/112

    77TM 77T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Solution

  • 8/12/2019 ARM Winter Sem

    78/112

    78TM 78T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Solution

    Loading constants-immediated

  • 8/12/2019 ARM Winter Sem

    79/112

    79TM 79T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    mode

    Constant specified in the instruction to becopied to register or used as an operand

    MOV r1,#0x7867

    ADD r1,r2,#567

    It is thus apparent that we cant have a 32 -bit

    constant embedded in the instruction .

    Loading constants

  • 8/12/2019 ARM Winter Sem

    80/112

    80TM 80T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Loading constants

    So then w hat is th e maximu m s ize of theco ns tant tha t can b e us ed in th eim m ediate m od e?

    We would like to be able to useimmediate constants as large as 32 bits.

    ARM uses an ingenious technique, the

    idea being the use of rotation of a smallnumber to generate a large number.

    Using the Barrel Shifter:Th S d O d

  • 8/12/2019 ARM Winter Sem

    81/112

    81TM 81T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    The Second Operand

    * Immediate value

    8 bit number

    Can be rotated right throughan even number of positions.

    Assembler will calculaterotate for you from constant.

    Register, optionally withshift operation applied.

    Shift value can be eitherbe:

    5 bit unsigned integerSpecified in bottom byteof another register.

    Operand 1

    Result

    ALU

    Barrel

    Shifter

    Operand 2

  • 8/12/2019 ARM Winter Sem

    82/112

    82TM 82T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Mechanism

  • 8/12/2019 ARM Winter Sem

    83/112

    83TM 83T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    12 bit for operand 2

    12 bit modified as 8 bit immediate constand 4 bit rotate operator

    Maximum possible rotation 32 bits,hence4bit rotate operand multiplied by 2 andthen rotated

    8 bit shifted by even number positions8 bit will become 32 bit during dataprocessing

    Generating a 32 bit constanti t ti

  • 8/12/2019 ARM Winter Sem

    84/112

    84TM 84T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    using rotation

  • 8/12/2019 ARM Winter Sem

    85/112

  • 8/12/2019 ARM Winter Sem

    86/112

    86TM 86T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    87/112

    87TM 87T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    88/112

    Second Operand :Immediate Value (2)

  • 8/12/2019 ARM Winter Sem

    89/112

    89TM 89T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Immediate Value (2)This gives us:

    0 - 255 [0 - 0xff]

    256,260,264,..,1020 [0x100-0x3fc, step 4, 0x40-0xffror 30]1024,1040,1056,..,4080 [0x400-0xff0, step 16, 0x40-0xff ror 28]4096,4160, 4224,..,16320 [0x1000-0x3fc0, step 64, 0x40-0xff ror 26]

    These can be loaded using, for example:MOV r0, #0x40, 26 ; => MOV r0, #0x1000 (ie 4096)

    To make this easier, the assembler will convert to this form for usif simply given the required constant:

    MOV r0, #4096 ; => MOV r0, #0x1000 (ie 0x40 ror 26)

    The bitwise complements can also be formed using MVN:MOV r0, #0xFFFFFFFF ; assembles to MVN r0, #0

    If the required constant cannot be generated, an error willbe reported.

    Load Store Instructions

  • 8/12/2019 ARM Winter Sem

    90/112

    90TM 90T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Transfers data between memory andprocessor registersSingle register transfer (Signed andunsigned words, half-words and bytes)

    Multiple register transfer between memoryand processor in a single instruction

    SWAP

    swap content of a memory location withregister

  • 8/12/2019 ARM Winter Sem

    91/112

    More addressing modes

  • 8/12/2019 ARM Winter Sem

    92/112

    92TM 92T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Scaled Address is calculated using base register andbarrel shifter

    Pre and post indexing

    Pre index with write back : LDR r0,[r1,#4]!Updates the address base register with newaddress

    Post Index : LDR r0,[r1],#4Updates the address register after address isused

    Multiple register transfer

  • 8/12/2019 ARM Winter Sem

    93/112

    93TM 93T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Load store multiple instructions transfermultiple register contents between the memoryand the processor in a single instruction

    More efficient for moving blocks of memoryand saving and restoring context and stack

    Can increase In ter rup t Latenc y

    Usually these instruction execution are notinterrupted by ARM

    Multiple Byte Load Store

  • 8/12/2019 ARM Winter Sem

    94/112

    94TM 94T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Any subset of current bank of registerscan be transferred to memory or fetchedfrom memory

    LDM

    STM

    The base register Rn determines the

    source or destination

    SWAP instruction

  • 8/12/2019 ARM Winter Sem

    95/112

    95TM 95T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Special case of load store instruction

    SWP

    SWB

  • 8/12/2019 ARM Winter Sem

    96/112

    Load and Store Pre-indexedAddressing

  • 8/12/2019 ARM Winter Sem

    97/112

    97TM 97T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Addressing

    STR r0, [r1,#12]

    r1

    0x200Base

    Register

    Memory

    0x5

    0x200

    r0

    0x5

    SourceRegisterfor STR

    Offset

    120x20c

    Load and Store Post-indexedAddressing

  • 8/12/2019 ARM Winter Sem

    98/112

    98TM 98T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Addressing

    STR r0, [r1], #12

    r1

    0x200

    OriginalBase

    Register

    Memory

    0x50x200

    r0

    0x5

    Source

    Registerfor STR

    Offset

    12 0x20c

    r1

    0x20c

    Updated

    BaseRegister

    MULTIPLE REGISTER LOAD ANDSTORE

  • 8/12/2019 ARM Winter Sem

    99/112

    99TM 99T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    STORE

  • 8/12/2019 ARM Winter Sem

    100/112

    100TM 100T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    LDM{c o n d }address -mode Rn {!},reg-l is t {^}

    {cond}

    IA - increment after.

    IB - increment before.

    DA - decrement after.

    DB -decrement before

  • 8/12/2019 ARM Winter Sem

    101/112

    101TM 101T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    LDMDA R0, {R4-R9}

    STMIA R1,{R2-R4}

    STMIA R1!,{R2-R4}

  • 8/12/2019 ARM Winter Sem

    102/112

    102TM 102T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    103/112

    103TM 103T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

  • 8/12/2019 ARM Winter Sem

    104/112

    READONLY AND READ/WRITEMEMORY

  • 8/12/2019 ARM Winter Sem

    105/112

    105TM 105T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    In readonly memory ,data is written usingdirectives like DCD,DCW

    From there, it is copied to readwritememory using load and storeinstructions

    Literal Pools

  • 8/12/2019 ARM Winter Sem

    106/112

    106TM 106T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    LDR R1,= 0x33333333.

    AREA PROG1,CODE,READONLY

    ENTRY LDR R1,=0x12400000LDR R2,=0X00555555

    ADD R3,R1,R2

    LTORGSPACE 4400

    STOP B STOPEND

  • 8/12/2019 ARM Winter Sem

    107/112

    STACK PROCESSING

  • 8/12/2019 ARM Winter Sem

    108/112

    108TM 108T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    A stack is implemented as linear datastructure which grows up (ascending) ordown (descending)

    Stack pointer hold the address of thecurrent top of the stack

    Stacks

  • 8/12/2019 ARM Winter Sem

    109/112

    109TM 109T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    A stack is an area of memory which grows as new data ispushed onto the top of it, and shrinks as data ispopped off the top.

    Two pointers define the current limits of the stack.

    A base pointerused to point to the bottom of the stack (the first location).

    A stack pointerused to point the current top of the stack .

    SPBASE

    PUSH

    {1,2,3}

    1

    2

    3

    BASE

    SP

    POP

    1

    2Result of pop = 3

    BASE

    SP

    Stack

  • 8/12/2019 ARM Winter Sem

    110/112

    110TM 110T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    OperationTraditionally, a stack grows down in memory, with the last pushed value atthe lowest address. The ARM also supports ascending stacks, where the stack

    structure grows up through memory.The value of the stack pointer can either:

    Point to the last occupied address (Full stack)and so needs pre-decrementing (ie before the push)

    Point to the next occupied address (Empty stack)and so needs post-decrementing (ie after the push)

    The stack type to be used is given by the postfix to the instruction:STMFD / LDMFD : Full Descending stackSTMFA / LDMFA : Full Ascending stack.STMED / LDMED : Empty Descending stackSTMEA / LDMEA : Empty Ascending stack

    Note: ARM Compiler will always use a Full descending stack.

    Stack Examples

  • 8/12/2019 ARM Winter Sem

    111/112

    111TM 111T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D

    Stack ExamplesSTMFD sp!,

    {r0,r1,r3-r5}

    r5

    r4

    r3r1

    r0SP

    Old SP

    STMED sp!,{r0,r1,r3-r5}

    r5

    r4

    r3

    r1

    r0

    SP

    Old SP

    r5

    r4

    r3

    r1

    r0

    STMFA sp!,{r0,r1,r3-r5}

    SP

    Old SP 0x400

    0x418

    0x3e8

    STMEA sp!,{r0,r1,r3-r5}

    r5

    r4

    r3

    r1r0

    SP

    Old SP

    STACKS ANDSUBROUTINES/PROCEDURES

  • 8/12/2019 ARM Winter Sem

    112/112