Computer Architecture
Exam #2
Thursday, November20 2008 in
BEN 207 (From 7-9 PM)
Study Guide
Here is a list of topics that you should be conversant with when preparing for Exam 2. Note that for a large part of Exam 2 you should not be simply reading but reworking solutions for various in-class exercises and homework. Ensure you review all of the following materials:Review materials:
- Slides and presentations from class
- Documents in the handouts folder off Blackboard
- In-class exercise
- Homework exercises
- Pertinent sections for each instruction from x86 manual(s).
Concepts related to Generic Data path:
- Number representation & conversions (primarily for encoding instructions)
- Representation of signed and unsigned numbers
- Unsigned binary
- 2’s complement
- Other unsigned representations
- Octal
- Decimal
- Hexadecimal
- Converting one representation to another.
- Data path design elements
- Components in a data path
- Designing logic circuits that constitute the data path.
- Tracing the operation of a complex data path to perform a specific instruction.
- Memory
- Organization of data path to include memory
- Bus
- Buses associated with memory unit
- Address bus
- Data bus
- Issues with selecting multiple bytes from memory for instruction and data
- Branching
- Concepts related to branching.
- Instruction pointer / Program counter
- Strategy for achieving branching in a data path
- Unconditional branches
- Conditional branches
- Logic circuit for generating various flags (ZF, CF, PF, SF, etc.) in a data path
- Von Newmann Architecture
X86 Assembly
- Assembly basics
- Use of mnemonics, their advantages and disadvantages
- Symbol table
- Organization
- Usage
- Instruction encoding
- Converting mnemonics to instruction bytes using x86 manual
- Converting instruction bytes to mnemonics using x86 manual
- Encoding instructions in memory
- Assembler. Steps involved in using an assembler and linker
- ROM
- RAM vs. ROM basic differences
- BIOS
- Modern architectural concepts
- CISC vs. RISC
- Memory storage format
- Little endian versus
- Big endian
- Microprogramming
- Vertical
- Horizontal
- Registers
- General purpose
- Names
- Parts of registers
- Typical usage.
- Special registers (Se
- Names
- Instruction Pointer (EIP)
- Flags
- ZF, CF, PF, SF etc.
- Manual interpretation
- Manual representation to assembly instruction conversions
- x86 Assembly programming
- Variables and data types
- Defining variables in assembly.
- Arithmetic instructions
- Bitwise operators (and, or, not, xor)
- Comparison and branching instructions
- Conditional jumps (je, jne, jge, jle, jg, jl etc.)
- Unconditional jumps (jmp)
- Memory addressing modes
- Register direct mode
- Immediate mode
- Direct mode
- Register direct mode
- Base displacement mode
- Base-index scaled mode
- Basic assembly language programming
- Developing assembly programs
- Tracing operation and working of assembly language programs.
- Converting Java to assembly
- Defining and operating using variables
- Converting arithmetic expressions to assembly
- Converting Boolean expressions to assembly
- Converting if statements to assembly
- Converting while loops to assembly.
- Numerical operations in assembly
- Various operations involving numbers and operations on numbers
- String operations in assembly
- String representations in assembly
- Performing various string operations in assembly.
Page 1 of 3