Hello Computer Organization Students:

Test 2 will be Thursday, April 10, in class. It will be closed book and notes, except for one 8.5" x 11" sheet of paper with notes and the orange ARM Quick Reference Card.

Chapter 2. Machine Instructions and Programs 
Memory Locations and Addresses: byte addressability, word alignment 
Memory Operations: Loads and stores 
General Assembly language instructions: data transfer, arithmetic and logic operations on data, program sequencing and control, and I/O transfers 
Branching and condition codes (N, Z, V, C) 
Addressing Modes and their machine language representation: immediate, register, absolute/direct, Indirect, Index, base with index, base with index and offset, relative, autoincrement, and autodecrement 
Stacks 
subroutines, stack frame 
shifting and logic instructions 
encoding of machine instructions 

Chapter 3. Part I on ARM (sections 3.1 - 3.7) 
ARM architecture: RISC, 16 32-bit registers, 32-bit addresses, barrel shifter for second operand 
Load and store addressing modes 
Arithmetic and logic instructions 
Branching instructions, setting of condition codes 
Machine language representation of ARM instructions 
Arrays: element addressing both 1-d and 2-d 
Subprograms: ARM Register convensions 

In addition to knowledge about the above concepts, the following assembly-language programming skills are to be tested too: 
1) translate high-level language control statements (while, for, if, etc.) into ARM assembly language (be able to handle complex boolean expressions involving ANDs, ORs, etc.) 
2) translate high-level language code containing array accesses into ARM assembly language 
3) use ARM (APCS) register convensions to decide which parameters and local variables should be stored in caller-saved (a-registers) or callee-saved (v-registers) 
4) translate high-level language subprograms into ARM assembly language