ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM...

44
ARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones 1 http://class.ece.iastate.edu/cpre288

Transcript of ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM...

Page 1: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM Architecture and Assembly Programming Intro

Instructors:

Dr. Phillip Jones

1 http://class.ece.iastate.edu/cpre288

Page 2: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Announcements

• HW9: Due Sunday 11/5 (midnight)

• Lab 9: object detection lab • Give TAs Creative Team name, and verified list of team members

• Exam 2: In class Thursday 11/9 – HW5 – HW8

– Labs 1-8

• Reading for remainder of semester

– Chapter 2.1-2.3, and 2.6.1-2.6.2

– Chapter 4.1 – 4.3

– Assemble ARM instruction set manual. • Preface, Chapter 3, Chapter 4

– ARM Procedure Call Standard • Sections: 5, 7.1.1, 7.2.

2

Page 3: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM ARCHITECTURE OVERVIEW

http://class.ece.iastate.edu/cpre288 3

Page 4: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Why use assembly programming?

4

• Full access to hardware features

– Compiler limits a programmers access to the hardware features that the compiler writer decided to implement

• Writing time critical portions of code

– Allows tight control over what the CPU is doing on every clock cycle

• Debugging

– It in not uncommon when trying to debug odd system behavior to have to look at disassembled code

http://class.ece.iastate.edu/cpre288

Page 5: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Why learn the ARM Hardware Architecture?

5

• Helps give intuition to why the assembly instructions were created the way the were

• Help understand what special feature may be available for you to make use of.

http://class.ece.iastate.edu/cpre288

Page 6: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM (Cortex-M4) Architecture Overview

6 http://class.ece.iastate.edu/cpre288

Table 2.1 Development history of the ARM® MCUs family.

Architecture Bit

Width Cores Designed by ARM Holdings

Cores Designed by Third Parties

Cortex Profile

ARMv1 32/26 ARM1

ARMv2 32/26 ARM2, ARM3 Amber, STORM Open Soft Core

ARMv3 32 ARM6, ARM7

ARMv4 32 ARM8

StrongARM, FA526

ARMv4T 32 ARM7TDMI, ARM9TDMI

ARMv5 32 ARM7EJ, ARM9E, ARM10E

XScale, FA626TE, Feroceon, PJ1/Mohawk

ARMv6 32 ARM11

ARMv6-M 32 ARM Cortex-M0, ARM Cortex-M0+, ARM Cortex-M1

Microcontroller

ARMv7-M 32 ARM Cortex-M3

Microcontroller

ARMv7E-M 32 ARM Cortex-M4

Microcontroller

ARMv7-R 32 ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7

Real-time

ARMv7-A 32 ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15, ARM Cortex-A17

Krait, Scorpion, PJ4/Sheeva, Apple A6/A6X

Application

ARMv8-A 64/32 ARM Cortex-A53, ARM Cortex-A57

X-Gene, Denver, Apple A7 (Cyclone), K12

Application

ARMv8-R 32 No announcements yet

Real-time

Page 7: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM (Cortex-M4) Architecture Overview

• 32 bit processor

– size of bus is 32 bits

– size of registers is 32 bits

– Size of instructions 16/32 bits

• RISC architecture

• Harvard architecture

– separate data and instruction memory

• 203 instructions

7 http://class.ece.iastate.edu/cpre288

Figure 2.1 The block diagram for a general MCU.

System Controller

System Clock Control-PLL

Memory Protection Unit

(MPU)

Float Point Unit (FPU)

Watchdog Timers

Reset Control

Peripheral Data

Flash Program

Application Specific Logics

MAC

UARTs 0 ~ 7

SPI

Analog Comparator

ADCs 0 ~ 7

CAN

USB

PWM

I2C

General Timers

Peripheral

Bridge

Page 8: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM Block Diagram

http://class.ece.iastate.edu/cpre288 8

Figure 2.1 The block diagram for a general MCU.

System Controller

System Clock Control-PLL

Memory Protection Unit

(MPU)

Float Point Unit (FPU)

Watchdog Timers

Reset Control

Peripheral Data

Flash Program

Application Specific Logics

MAC

UARTs 0 ~ 7

SPI

Analog Comparator

ADCs 0 ~ 7

CAN

USB

PWM

I2C

General Timers

Peripheral

Bridge

Page 9: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM: RISC CPU Architecture

• What is RISC?

– Reduced Instruction Set Computing (with respect to CISC, Complex Instruction set Computing)

• Typical RISC

– LD/Store based: ALU to memory transaction via registers

– Most instruction are the same length

– Typically many less instructions than a CISC architecture

– Typically many more registers than CISC since Data must be moved into a register before it can be operated on

– Low number of instruction typically makes hardware design simpler (as compared to CISC)

http://class.ece.iastate.edu/cpre288 9

Ref: http://www.seas.upenn.edu/~palsetia/cit595s07/RISCvsCISC.pdf (Diana Palsetia)

Page 10: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM: RISC vs CISC example

10

Ref: http://www.seas.upenn.edu/~palsetia/cit595s07/RISCvsCISC.pdf (Diana Palsetia)

mov R1, 10 mov R2 5 mul R2, R1

mov R1, 0 mov R2, 10 mov R3, 5 Begin: add R1, R2 loop Begin

CISC RISC

• CISC: Instructions often variable length and variable time

• RISC: Instruction typically constant length and time

– Simpler hardware logic for decoding instructions (thus typically faster)

1 byte, 1clk 1 byte, 1clk 4 byte, 30 clk

Size / time

1 byte, 1clk 1 byte, 1clk 1 byte, 1 clk 1 byte, 1clk 1 byte, 1 clk

Size / time

http://class.ece.iastate.edu/cpre288

Page 11: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

11

ARM CPU Core Summary

Instructions are 16-bit or 32-bit

Simple three-stage pipeline

Registers are 32-bit and addresses are 32-bit

http://class.ece.iastate.edu/cpre288

Page 12: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Cortex-M4 Architecture

• 32 bit processor

– size of data bus is 32 bits

– size of registers is 32 bits

• Harvard architecture

• RISC architecture

• ~203 instructions

http://class.ece.iastate.edu/cpre288 12

Figure 2.3 The functional block diagram for the ARM®

Cortex®

-M4 MCU.

Interrupt Controller

Trace Interface

Debug Interface JTAG/SWD

Interrupts

ICode & DCode

(Flash) & (SRAM) RAM + Peripherals

SysTick

Trace Interface

Page 13: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Cortex-M4 Processor Architecture

• 32 bit processor

– size of data bus is 32 bits

– size of registers is 32 bits

• Harvard architecture

• RISC architecture

• ~203 instructions

http://class.ece.iastate.edu/cpre288 13

Figure 2.3 The functional block diagram for the ARM®

Cortex®

-M4 MCU.

Interrupt Controller

Trace Interface

Debug Interface JTAG/SWD

Interrupts

ICode & DCode

(Flash) & (SRAM) RAM + Peripherals

SysTick

Trace Interface

Page 14: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM: Harvard Architecture

14

• Program memory

– Flash based: Program stays even if power turned off (non-volatile)

– 16-bits wide, instructions are 16-bit or 32-bit wide.

• Data Memory

– SRAM based: Data disappears if power is turned off (volatile)

– 32-bits wide:

CPU

Program Memory (256KB)

32-bits

64K rows

Data Memory (32KB)

32-bits

8K rows

http://class.ece.iastate.edu/cpre288

Page 15: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM: Logical Data Memory organization

15

• Registers:

– 32-bits wide

– Directly accessible by ALU

• Data Memory:

– 32-bit wide

– Must use a register to move to/from the ALU

Data Memory (32KB)

CPU

8K rows

16 32-bit Registers

32-bits

ALU

http://class.ece.iastate.edu/cpre288

Page 16: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM: Memory Map organization

16

CPU

http://class.ece.iastate.edu/cpre288

Page 17: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Understanding Data

• Stack – Stores data related to function variables, function calls, parameters,

return variables, etc.

– Data on the stack can go “out of scope”, and is then automatically deallocated

– Starts at the top of the program’s data memory space, and addresses move down as more variables are allocated

• Heap – Stores dynamically allocated data

– Dynamically allocated data usually calls the functions alloc or malloc (or uses new in C++) to allocate memory, and free to (or delete in C++) deallocate

– There’s no garbage collector!

– Starts at bottom of program’s data memory space, and addresses move up as more variables are allocated

http://class.ece.iastate.edu/cpre288 17

Page 18: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM: Typical Logical Memory Layout

18 http://class.ece.iastate.edu/cpre288

• Static Data (e.g. Global vars) • Stack (e.g. local vars, function args & return value, return address) • Heap (e.g. dynamically allocated memory: malloc, new) • Code (Code may be in the same or a separate memory device)

Code Segment 0x0000_0000

Static Data

Heap

Stack

Data

0xHigh address

Stack grows downward Stack Pointer (SP):

Address of top of the stack

Stack Base Address

Heap grows upward

Code

Page 19: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Example Memory Layout

static char[] greeting =“Hello world!”;

main()

{

int i;

char bVal;

LCD_init();

LCD_PutString(greetin);

}

Static Data

Code

Heap (grows up)

Stack

(grows down)

Low end Address

High end Address

I/O addresses

http://class.ece.iastate.edu/cpre288 19

Memory Mapped I/O, Devices

Page 20: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM: Typical Function Stack-Frame

20 http://class.ece.iastate.edu/cpre288

• Stack is typically divided into a number of function stack-frames. • Stack-Frame: Contains information associated with a function call

– Function args, local vars, return address, preserved values

Stack grows downward

Stack Base Address Stack

Function 1 Frame

• Function Return Address • Preserved Values • Function Args • Local Vars

Function 2 Frame

• Function Return Address • Preserved Values • Function Args • Local Vars

… …

Page 21: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Function and Stack

Conventional program stack grows downwards: New items are put at the top, and the top grows down

Occupied

low address

high address

stack top

stack growth

Page 22: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Function and Stack

Auto, local variables have their storage in stack

Why stack?

• The LIFO order matches perfectly with functions call/return order – LIFO: Last In, First Out

– Function: Last called, first returned

• Efficient memory allocation and de-allocation – Allocation: Decrease SP (stack top): PUSH

– De-allocation: Increase SP: POP

Page 23: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Function and Stack

Function Frame: Local storage for a function

Example: 1. A is called; 2. A calls B; 3. B calls C; 4. C returns

Page 24: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Function and Stack

What can be put in a stack frame?

• Function return address

• Parameter values

• Return value

• Local variables

• Saved register values

May 18, 2011 http://class.ece.iastate.edu/cpre288 24

Page 25: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Example: Stack

• The following example shows the execution of a simple program (left) and the memory map of the stack (right)

http://class.ece.iastate.edu/cpre288 25

Page 26: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Example: Stack

void doNothing() { char c; } int main() { char x, y, z; short i; for (i = 0; i < 10; i++) { doNothing(); } return 0; }

http://class.ece.iastate.edu/cpre288 26

994

993

996

995

z 998

997

y

x 1000

999

….

….

Page 27: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Example: Stack

void doNothing() { char c; } int main() { char x, y, z; short i; for (i = 0; i < 10; i++) { doNothing(); } return 0; }

http://class.ece.iastate.edu/cpre288 27

i

z

y

x

994

993

996

995

998

997

1000

999

….

….

Page 28: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Example: Stack

void doNothing() { char c; } int main() { char x, y, z; short i; for (i = 0; i < 10; i++) { doNothing(); } return 0; }

http://class.ece.iastate.edu/cpre288 28

i

z

y

x

994

993

996

995

998

997

1000

999

….

….

Page 29: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Example: Stack

void doNothing() { char c; } int main() { char x, y, z; short i; for (i = 0; i < 10; i++) { doNothing(); } return 0; }

http://class.ece.iastate.edu/cpre288 29

PC Address for line 9

i

z

y

x

994

993

996

995

998

997

1000

999

….

….

Page 30: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Example: Stack

void doNothing() { char c; } int main() { char x, y, z; short i; for (i = 0; i < 10; i++) { doNothing(); } return 0; }

http://class.ece.iastate.edu/cpre288 30

PC Address for line 9

i

z

y

x

994

993

996

995

998

997

1000

999

….

….

Page 31: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Example: Stack

void doNothing() { char c; } int main() { char x, y, z; short i; for (i = 0; i < 10; i++) { doNothing(); } return 0; }

http://class.ece.iastate.edu/cpre288 31

c

PC Address for line 9

i

z

y

x

994

993

996

995

998

997

1000

999

….

….

Page 32: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Example: Stack

void doNothing() { char c; } int main() { char x, y, z; short i; for (i = 0; i < 10; i++) { doNothing(); } return 0; }

http://class.ece.iastate.edu/cpre288 32

i

z

y

x

994

993

996

995

998

997

1000

999

….

….

Page 33: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

33

General Purpose Register File

http://class.ece.iastate.edu/cpre288

Figure 2.5 A structure block diagram of 21 registers in the Cortex®-M4 Core.

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13 (MSP-PSP)

R14 (LR)

R15 (PC)

XPSR

PRIMASK

FAULTMASK

BASEPRI

CONTROL

APSR EPSR IPSR

Interrupt Exception Mask

Registers

Program Status Register

Control Register

Stack Pointer Register

Link Register

Program Counter

Main Stack Pointer (MSP)

Process Stack Pointer (PSP)

Low Register

High Register

Application

PSR

Execution

PSR

Interrupt PSR

13 General Purpose

Registers

(R0 ~ R12)

Page 34: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

ARM: GP Registers (Cont.)

34

• 16 32-bit general purpose registers

– Used for accessing SRAM

– Used for storing function parameters

– Used for instructions to execute operations on

• What is an 32-bit register.

– Basically just 32 D-Flips connected together

Bit 31 Bit 30 Bit 5 … … Bit 2 Bit 1 Bit 0

http://class.ece.iastate.edu/cpre288

Page 35: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

STATUS REGISTER (SREG)

http://class.ece.iastate.edu/cpre288 35

Page 36: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

36

Status Register (SREG)

http://class.ece.iastate.edu/cpre288

(a) Three individual register – APSR, IPSR and EPSR.

(b) The combined register PSR.

Figure 2.6 Structure and bit functions in special registers.

PSR N Z C V Q ICI/IT T GE* ICI/IT Exception Number

Bits 31 30 29 28 27 26:25 24 23:20 19:16 15:10 9 8 7 6 5 4 3 2 1 0

APSR N Z C V Q GE* Reserved

IPSR Reserved Exception Number

EPSR Reserved ICI/IT T Reserved ICI/IT Reserved

Bits 31 30 29 28 27 26:25 24 23:20 19:16 15:10 9 8 7 6 5 4 3 2 1 0

Page 37: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Status Register (SREG): Common flags

• Z: Zero flag

– Set to 1 when the result of an instruction is 0

• C: Carry flag

– Set to 1 when the result of an instruction causes a carry to occur

• N: Negative

– Set to 1 to indicate the result of an instruction is negative

• V: Overflow

– Set to 1 to indicate the result of an instruction caused an overflow

http://class.ece.iastate.edu/cpre288 37

Page 38: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

38

Example ARM Assembly

int x, a, b;

x = (a + b);

MOVW r4,address-of-a; get address for a

LDR r0,[r4]; get value of a

MOVW r4,address-of-b; get address for b

LDR r1,[r4]; get value of b

ADD r3,r0,r1; compute a+b

MOVW r4,address-of-x; get address for x

STR r3,[r4]; store value of x

http://class.ece.iastate.edu/cpre288

Page 39: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

39

How to Study Assembly

1. Get to know CPU registers

Memorize rules for usage

2. Know basic types of Instruction

Memory load and store

Arithmetic/Logic

Compare and branch

http://class.ece.iastate.edu/cpre288

Page 40: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

How to Study Assembly

3. Translate C statements

Memory accesses

Simple arithmetic statements

If statement

Loop statements

4. Translate C functions

Function Linkage

Making a function call

40 http://class.ece.iastate.edu/cpre288

Page 41: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

How to Study Assembly

5. Interrupt System

Principle of interrupt and exception

Interrupt vector table

Saving and restoring context

41 http://class.ece.iastate.edu/cpre288

Page 42: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Challenges

Challenges in learning Assembly

– Must understand how program works cycle by cycle

– Have to memorize some notations before fully understanding them

42 http://class.ece.iastate.edu/cpre288

Page 43: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

Announcements

• Final Projects

– Project Teams: Demo Thursday 7/6 • +5 bonus if Demoed by Wednesday 7/5

– Reminder lab attendance is mandatory: -10 points from final project for each lab session you miss

• Exam 2: In class Thursday 11/9

• Reading for remainder of semester

– Chapter 2.1-2.3, and 2.6.1-2.6.2

– Chapter 4.1 – 4.3

– Assemble ARM instruction set manual. • Preface, Chapter 3, Chapter 4

– ARM Procedure Call Standard • Sections: 5, 7.1.1, 7.2.

43

Page 44: ARM Architecture and Assembly Programming Introclass.ece.iastate.edu/cpre288/lectures/lect20.pdfARM Architecture and Assembly Programming Intro Instructors: Dr. Phillip Jones  1

http://class.ece.iastate.edu/cpre288 44