Principal lecturer: Dr Ian Pratt (email@example.com)
Taken by: Part IB, Part II (General), Diploma
Past exam questions
simple.s - A short program demonstrating how to allocate, write to and display the contents of an area of memory.
addressing.s - A short program illustrating
some useful ARM assembler pseudo-instructions for loading addresses and constants into registers.
Accessing words in memory
Accessing bytes in memory
Overwriting your code in memory
Errata and Additional Material
Lectures 1-12 (Dr Robert Mullins, firstname.lastname@example.org)
- A short guide to downloading and using the free ARM tools. These tools may
be particularly useful to people who do not attend the ECAD labs, but
want to gain some experience of assembley language programming.
(Note: these tools are slightly different to those used in the labs.)
A complete guide to installing and using the tools is included in
the files provided by ARM.
Lecture 2, slide 17 On row 6, the second column should be
LD R4, (R1)- . Again, the last row and rightmost column should be
Lecture 3, slide 15 The "Never" (NV) Extension
should not be used. It is actually used for other purposes in more
recent implementations of ARM processors. There are lots of ways of
writing no-ops (instructions that have no effect on the processor
state), e.g. MOV R0, R0. (performs no useful function and has
no effect on processor state!)
You will not need to use NOPs in
any of the labs. They are sometimes required in rare cases on the ARM
to allow operations to complete before accessing their results.
Please read chapters 1 and 2 of "Computer Architecture a Quantitative Approach"
Lecture 4 - Programming the ARM
Updated notes (a few extra slides, mostly examples)
Lecture 5 - OS Support and Memory Management
If you are unclear about the concepts of virtual memory a gentle
introduction is available in Section 7.3 (see Section 5.6 for exceptions and
interrupts) of "Computer Organization &
Design The Hardware Software Interface", David A. Patterson and John
L. Hennessy. You could also read the first couple of pages of the
first survey paper (below).
If you are confident about the material in this
lecture and want to read more about virtual memory systems, two good
survey papers are listed below.
"Virtual Memory: Issues of Implementation"
Bruce Jacob and Trevor Mudge
"Virtual Memory in Contemporary Microprocessors"
Bruce Jacob and Trevor Mudge
Lecture 6 - Instruction Set Examples
The virtual memory systems described in Lecture 5 divide the virtual
and physical address space into a set of fixed sized pages. An
alternative to using a fixed size block (a page) is to allow blocks to
vary in size, variable-size blocks are called segments.
Segments reduce internal fragmentation - the unused portion of a fixed
sized block. Unfortunately, they complicate the process of replacing a
block. Loading a new segment now involves finding a suitably sized
region of free main memory, perhaps requiring a number of different
segments to be swapped out. This leads to external fragmentation
(areas of main memory which remain unsed because they are not large
enough to hold whole segments).
See Hennessey and Patterson "paging versus segmentation", p.463.
Lecture 7 - Virtual Machines
Lecture 8 - Processor Design
Lecture 15 - Buses
Article on microprogramming
Lecture 16 - Microprogramming
Article on USB, serial and parallel ports