Embedded System Design Center Sai Kumar Devulapalli ARM7TDMI Microprocessor Thumb Instruction Set.

Slides:



Advertisements
Similar presentations
ARM versions ARM architecture has been extended over several versions.
Advertisements

Appendix D The ARM Processor
Embedded Systems Architecture
THUMB Instructions: Branching and Data Processing
1 ARM Movement Instructions u MOV Rd, ; updates N, Z, C Rd = u MVN Rd, ; Rd = 0xF..F EOR.
Embedded System Design Center ARM7TDMI Microprocessor Data Processing Instructions Sai Kumar Devulapalli.
COMP3221 lec9-logical-I.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lecture 9: C/Assembler Logical and Shift - I
ARM Microprocessor “MIPS for the Masses”.
Thumb Data Processing Instructions and Breakpoint Instructions 02/18/2015 Mingliang Ge Yi (Leo) Wu Xinuo (Johnny) Zhao.
Chapter 12: Software interrupts (SWI) and exceptions
Introduction to ARM Architecture, Programmer’s Model and Assembler Embedded Systems Programming.
Topics covered: ARM Instruction Set Architecture CSE 243: Introduction to Computer Architecture and Hardware/Software Interface.
ARM 7 Datapath. Has “BIGEND” input bit, which defines whether the memory is big or little endian Modes: ARM7 supports six modes of operation: (1) User.
Prardiva Mangilipally
ARM Instructions I Prof. Taeweon Suh Computer Science Education Korea University.
The ARM Programmer’s Model
Embedded System Design Center
Topic 8: Data Transfer Instructions CSE 30: Computer Organization and Systems Programming Winter 2010 Prof. Ryan Kastner Dept. of Computer Science and.
Exception and Interrupt Handling
Introduction to Embedded Systems
Some material taken from Assembly Language for x86 Processors by Kip Irvine © Pearson Education, 2010 Slides revised 2/2/2014 by Patrick Kelley.
Lecture 4. ARM Instructions #1 Prof. Taeweon Suh Computer Science Education Korea University ECM586 Special Topics in Embedded Systems.
Chapter 3-1 ARM ISA ARM Instruction Set Architecture ARM Instruction Set Architecture Next Lecture Next Lecture  ARM program examples.
Lecture 4. ARM Instructions Prof. Taeweon Suh Computer Science & Engineering Korea University COMP427 Embedded Systems.
1 ARM University Program Copyright © ARM Ltd 2013 Cortex-M0+ CPU Core.
Topic 7: Control Flow Instructions CSE 30: Computer Organization and Systems Programming Winter 2011 Prof. Ryan Kastner Dept. of Computer Science and Engineering.
ECS642U Embedded Systems ARM CPU and Assembly Code William Marsh.
Microprocessors The ia32 User Instruction Set Jan 31st, 2002.
ARM7TDMI Processor. 2 The ARM7TDMI processor is a member of the Advanced RISC machine family of general purpose 32-bit microprocessor What does mean ARM7TDMI.
Embedded System Design Center
AT91 Interrupt Handling. 2 Stops the execution of main software Redirects the program flow, based on an event, to execute a different software subroutine.
ARM Processor Architecture (I) Speaker: Lung-Hao Chang 張龍豪 Advisor: Porf. Andy Wu 吳安宇教授 Graduate Institute of Electronics Engineering, National Taiwan.
1 Chapter 4 ARM Assembly Language Smruti Ranjan Sarangi Computer Organisation and Architecture PowerPoint Slides PROPRIETARY MATERIAL. © 2014 The McGraw-Hill.
ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION – ARM
Lecture 2: Advanced Instructions, Control, and Branching EEN 312: Processors: Hardware, Software, and Interfacing Department of Electrical and Computer.
Unit-2 Instruction Sets, CPUs
AT91 C-startup. 2 For reasons of modularity and portability most application code for an embedded application is written in C The application entry point.
1 The Instruction Set Architecture September 27 th, 2007 By: Corbin Johnson CS 146.
©2000 Addison Wesley Little- and big-endian memory organizations.
1 TM 1 Embedded Systems Lab./Honam University 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)
Introduction to ARM processor. Intro.. ARM founded in November 1990 Advanced RISC Machines Company headquarters in Cambridge, UK Processor design centers.
1 TM 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 Architecture.
ARM7 TDMI INTRODUCTION.
Instruction Set Architectures Early trend was to add more and more instructions to new CPUs to do elaborate operations –VAX architecture had an instruction.
Ch 5. ARM Instruction Set  Data Type: ARM processors supports six data types  8-bit signed and unsigned bytes  16-bit signed and unsigned half-words.
Intel Xscale® Assembly Language and C. The Intel Xscale® Programmer’s Model (1) (We will not be using the Thumb instruction set.) Memory Formats –We will.
I NTEL 8086 M icroprocessor بسم الله الرحمن الرحيم 1.
Lecture 6: Decision and Control CS 2011 Spring 2016, Dr. Rozier.
1 TM 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 Architecture.
Intel Xscale® Assembly Language and C. The Intel Xscale® Programmer’s Model (1) (We will not be using the Thumb instruction set.) Memory Formats –We will.
Displacement (Indexed) Stack
Chapter 4: Introduction to Assembly Language Programming
Instruction sets : Addressing modes and Formats
Introduction to the ARM Instruction Set
ARM Registers Register – internal CPU hardware device that stores binary data; can be accessed much more rapidly than a location in RAM ARM has.
The Cortex-M3/m4 Embedded Systems: Cortex-M3/M4 Instruction Sets
EE 319K Introduction to Embedded Systems
William Stallings Computer Organization and Architecture 8th Edition
The University of Adelaide, School of Computer Science
ARM Load/Store Instructions
CORTEX-M0 Structure Discussion 1
Branching instructions
ARM Introduction.
Overheads for Computers as Components 2nd ed.
THUMB INSTRUCTION SET.
Computer Architecture
Multiply Instructions
Introduction to Assembly Chapter 2
An Introduction to the ARM CORTEX M0+ Instructions
Presentation transcript:

Embedded System Design Center Sai Kumar Devulapalli ARM7TDMI Microprocessor Thumb Instruction Set

2 of 37 Objectives To understand 16-bit Thumb mode operation of ARM Processor. To understand the features of Thumb mode operation and how Thumb instructions decompress to ARM Mode. To know the technique of switching between ARM and Thumb mode of operations. To know the similarities and differences between ARM and Thumb mode of operation To understand exception handling and branching in Thumb mode. To understand operation of data processing instructions and data transfer instructions in Thumb mode.

3 of 37 CPU Instruction Set ARM7TDMI processor has two instruction sets: the standard 32-bit ARM instruction set a 16-bit THUMB instruction set.

4 of 37 Processor Operating States ARM state which executes 32-bit, word-aligned ARM instructions. THUMB state which operates with 16-bit, halfword-aligned THUMB instructions.

5 of 37 Thumb Instruction Set ARM architecture versions v4T and above define a 16-bit instruction set called the Thumb instruction set. The functionality of the Thumb instruction set is a subset of the functionality of the 32-bit ARM instruction set. A processor that is executing Thumb instructions is operating in Thumb state. A processor that is executing ARM instructions is operating in ARM state.

6 of 37 Thumb Instruction Set A processor in ARM state cannot execute Thumb instructions, and a processor in Thumb state cannot execute ARM instructions. You must ensure that the processor never receives instructions of the wrong instruction set for the current state. Each instruction set includes instructions to change processor state. Note: ARM processors always start executing code in ARM state.

7 of 37 Thumb Instruction Set The processor in Thumb mode uses same eight general-purpose integer registers that are available ARM mode.Some Thumb instructions also access the PC(ARM register 15),the Link Register(ARM register 14) and Stack Pointer(ARM register 13). When R15 is read,bit[0] is zero and bits[31:1]contain the PC.when R15 is written,bit[0] is IGNORED and bits[31:1] are written to the PC. Thumb does not provide direct access to the CPSR or any SPSR. Thumb execution is flagged by the T bit(bit[5]) in the CPSR. T==0 32-bit instructions are fetched(ARM instruction) T==1 16-bit instructions are fetched(Thumb instruction)

8 of 37 Thumb applications In a typical embedded system: use ARM code in 32-bit on-chip memory for small speed- critical routines use Thumb code in 16-bit off-chip memory for large non- critical control routines Note: Switching between ARM and Thumb States of Execution Using BX Instruction

9 of 37 Thumb applications For Most Instruction Generated by the Compiler Condition Execution is not used. Source and Destination Registers are identical Only low registers used Constants are limited size Inline barrel shifter not used

10 of 37 DATA TYPES Byte (8-bit): placed on any byte boundary. Half-word (16-bit): aligned to two-byte boundaries. Word (32-bit): aligned to four- byte boundaries.

11 of 37 Features Not a complete architecture Dynamically decompressed to ARM Instruction Fully supported by ARM development tools Both entry and exit are done using corresponding BX Instruction

12 of 37 ARM7TDMI core

13 of 37 Mode Switching Default entry to exception mode is always ARM Explicit entry to Thumb is done using ARM mode BX Instruction Explicit entry back to ARM mode is done using Thumb mode BX Instruction

14 of 37 Thumb Programmers Model Registers r0 to r7 are accessible (Lo) Few instructions require r8 to r15 to be specified r13 is used as the stack pointer r14 is used as the link register r15 is used as the program counter

15 of 37 THUMB Register Organisation Thumb General registers and Program Counter Thumb Program Status Registers User / System FIQ SupervisorAbortIRQUndefined CPSR sprsr_fiq SPSR_ABTSPSR_SVCsprsr_fiq SPSR_FIQsprsr_fiq SPSR_IRQ CPSR sprsr_fiq SPSR _UND PC LR SP r7 r4 r5 r2 r1 r0 r3 r6 PC_ FIQ r7 r4 r5 r2 r1 r0 r3 r6 LR_ FIQ SP_FIQ PC_ SVC r7 r4 r5 r2 r1 r0 r3 r6 LR_ SVC SP_SVC PC_ ABT r7 r4 r5 r2 r1 r0 r3 r6 LR_ ABT SP_ABT PC_ IRQ r7 r4 r5 r2 r1 r0 r3 r6 LR_ IRQ SP_IRQ PC_ UND r7 r4 r5 r2 r1 r0 r3 r6 LR_ UND SP_UND

16 of 37 ARM-Thumb Similarities Load-store architecture Support 8-bit byte, 16-bit half-word and 32 bit word data types with aligned boundaries 32 bit unsegmented memory.

17 of 37 ARM-Thumb differences Unconditional Execution of instruction 2-address format for data processing Less regular instruction formats.

18 of 37 Thumb exception With exception processor is returned to ARM mode. While returning previous mode is restored as SPSR is transferred to CPSR

19 of 37 Thumb Branching Short conditional branches Medium range unconditional branches Long range Subroutine calls Branch to change to ARM Mode

20 of 37 Branch Instruction Formats Condition8-Bit Offset – Bit Offset 1 1 1H11 – Bit Offset HRm0 0 0 B BL BX Rm

21 of 37 Features Different format for each case Offset is reduced to 11bit and 8 bit Offset is shifted left by 1-bit (to give half-word alignment) and sign-extended to 32 bits. BL is more subtle to give 22-bit offset using link register for temporary storage No direct mapping to ARM instructions as Thumb require half-word aligned offsets.

22 of 37 BL Instruction To allow for a reasonably large offset to the target subroutine each of these two instructions is automatically translated by the assembler into a sequence of two 16 bit thumb instructions 1.H = 10 LR := PC + (sign-extended offset shifted left 12 places); 2.H = 11 PC := LR + (offset shifted left 1 place) 3.LR := address of next instruction

23 of 37 Software Interrupt Instruction Address of next instruction is saved in r14_svc CPSR is saved in r14_svc Disables IRQ, Clears T bit, Enters Supervisor mode PC is forced to 0x08 8 bit immediate is zero extended to fill the 24-bit field in the ARM instruction. Limits SWIs to first 256 of 16 million ARM SWIs – Bit Immediate

24 of 37 Data Processing Fairly complex instruction formats No conditional execution Separate shift operations provided, no shifting of second operand All data processing instruction set condition code bits (no need of ‘S’)

25 of 37 Instruction formats Rd, Rn, Rm Rd, Rn, # Rd|Rn, Rm|Rs Rd, Rn, # Rd, #

26 of 37 Instructions MOV Rd, # MVN Rd, Rm CMP Rn, # CMP Rn, Rm CMN Rn, Rm TST Rn, Rm

27 of 37 Instruction ADD Rd, Rn, # ADD Rd, # ADD Rd, Rn, Rm ADC Rd, Rm SUB Rd, Rn, # SUB Rd, # SUB Rd, Rn, Rm SBC Rd, Rm NEG Rd, Rn

28 of 37 Instruction LSL Rd, Rm, # LSL Rd, Rs LSR Rd, Rm, # LSR Rd, Rs ASR Rd, Rm, # ASR Rd, Rs ROR Rd, Rs

29 of 37 Instruction AND Rd, Rm EOR Rd, Rm ORR Rd, Rm BIC Rd, Rm MUL Rd, Rm

30 of 37 Instruction (using Hi registers) ADD Rd, Rm(1 or 2 Hi registers) CMP Rn, Rm(1 or 2 Hi registers) MOV Rd, Rm(1 or 2 Hi registers) ADD Rd, PC, # ADD Rd, SP, # ADD SP, SP, # SUB SP, SP, # Except others donot set condition code bits

31 of 37 Data Transfer Instruction LDR|STR Rd, [Rn, #off5] LDR|STR Rd, [Rn, Rm] LDRB|STRB Rd, [Rn, #off5] LDRB|STRB Rd, [Rn, Rm] LDRH|STRH Rd, [Rn, #off5] LDRH|STRH Rd, [Rn, Rm] *Signed operands: LDR|STR {S} {H|B} Rd, [Rn, Rm]

32 of 37 Multiple register transfers LDMIA|STMIA Rn!, { } Rn may be any register among Ro – R7 Register set can be any subset of R0 – R7 but not base register ‘Rn’ Write back to base register is always selected.

33 of 37 Stack Mode POP|PUSH { {, R}} R13 (sp) is used as base register Uses Full Descending Stack In addition any subset of Ro-R7 registers LR (lr) may be included in PUSH instruction and PC (pc)may be included in POP instruction

34 of 37 Thumb-ARM Decompression Translation from 16-bit Thumb instruction to 32-bit ARM instruction Condition bits changed to ‘always’ Lookup to translate major and minor opcodes Zero extending 3-bit register specifiers to give 4-bit specifiers Zero extending immediate values Implicit ‘S’(affecting condition codes) should be explicitly specified. Thumb 2-address format must be mapped to ARM 3- address format

35 of 37 Properties Thumb code requires 70% of space of ARM code Thumb code uses 40% more instructions than the ARM code With 32-bit memory ARM code is 40% faster With 16-bit memory Thumb code is 45% faster than ARM code Thumb code uses 30% less external memory power than ARM code.

36 of 37 Summary Thumb ARM mode switching Similarities and differences Thumb exception handling Data processing instructions Data transfer instructions Separate shift instructions Restricted stack operations.

37 of 37 Thank You, Any Questions ?