Computer Architecture and Systems Programming Lab

Online Information Index and Lecture Session Breakdown

(* UNDER CONSTRUCTION *)


Sketch of Lecture Sessions

  1. Class introduction - including sytems programming lab (week 1)
    1. Goals and expectations of this course
    2. Basic principles: what is a computer, basic program execution, memory organization, what is an operating system.
    3. Low-level programming and some C language basics.
  2. Command interpreters (Systems programming lab, week 6)
  3. Operating on Data in Files (Systems programming lab, week 9)
    1. Accessing data in files: read/write and memory mapping.
    2. ELF file structure.
    3. Linking and loading.
  4. Basic low-level programming issues (weeks 2-5, 7-8)
    1. Architecture design goals
    2. Assembly language programming basics
    3. Opcodes and instruction format
      • Main opcode and modifier fields
      • Fixed and variable length instructions
      • Mnemonics for opcodes and the idea of assembly language
    4. Operands and addressing modes
      • Number and size of operands
      • Assembly language syntax basics
      • Register addressing
      • Immediate addressing
      • Direct addressing
      • Register indirect addressing
      • Offsets and relative addressing
      • Segments and the resulting addressing modes
      • Indexed addressing
      • Indirect addressing
      • Auto-increment, auto-decrement, and stacks
      • Other addressing modes: current page, 0-page, indirection bits.
    5. Machine instruction categories
      1. Data transfer operations
        • MOVE instructions
        • Exchange
        • Repeated move instructions (strings)
        • Special move instructions
      2. Arithmetic and logical operations
        • Bitwise AND, OR, NOT, XOR
        • Shift (logical and arithmetic), rotate
        • Compare
        • Negate
        • Add and subtract (and extending the operands)
      3. Bit manipulation instructions
        • Flag manipulation
        • Bit and bit field manipulation
      4. Program flow control operations (branch, subroutine call)
        • Branching addressing modes
        • jump instructions
        • Branch and conditional JUMP instructions
        • Call and return instructions
        • Looping instructions
      5. Input-output operations
        • IN instructions
        • OUT instructions
        • Memory mapped input output systems
        • I/O mapped input output systems
      6. Machine control operations and interrupts
        • Protection support instructions
        • Interrupts: hardware and software
        • Atomic operations
        • Special control operations
      7. Pseudo-operations and the process of assembly and linking
        • Defining space for variables
        • Defining constant data
        • Initial addresses for code and data
        • Defining constants
    6. High-level language support
      • Parameters, local variables
      • High-level language calling convensions
      • Architecture support for high-level languages
    7. Pseudo-operations and the process of assembly and linking
      • Macros (outline)
      • Assembly: pass I
      • Assembly: pass II
      • Address fixup tables, relocatable object files
      • The linking process and executable files
      • Libraries, dynamic linking
    8. Machine control operations and interrupts
      • Protection support instructions
      • Interrupts: hardware and software
      • Atomic operations
      • Special control operations
    9. Monitors and debuggers: debugging low-level programs
      • Viewing and modifying registers and data
      • Running, single-stepping, breakpoints
      • Trace and watch
      • Symbolic debuggers
  5. Advanced low-level programmaing issues (weeks 10-12)
    1. Co-routines and "processes"
      • Using several stacks
      • State of computation ("process")
      • Re-entrant code
      • Transfer of control: RESUME operation
    2. Position-independent code
    3. Self-modifying code
    4. Executable file computer viruses
  • Communication (week 13)
    1. Error detection and correction
    2. Parallel communication (hardware handshake)
    3. Serial communication

    Online Material

    1. Slides for week 1 lectures (architecture, SPLAB), course introduction (pdf), basic principles (pdf), .
    2. Slides for week 2-3 lectures (architecture), basics (pdf), (Instruction formats and addressing modes postscript, pdf), (Instruction categories postscript, pdf).
    3. Slides for week 4-5 lectures (architecture), (postscript, pdf).
    4. Example co-routine code main.c and co.s.
    5. Example assembly code with macros, and resulting listing file.
    6. Files used in class on position-independent code.
    7. Slides for class on codes and communication, pdf).

    Back to main page of this course
    Back to BGU CS HomePage