The material to be covered in C.Eng.332
Midterm
I  
(March 31, 2000 Friday @15:40 - 17:30, BMB4)
Hint: Review the lecture notes
thoroughly,
understand the examples in the book, solve relevant exercises at the end of the chapters.
P.S. You may bring in a
double-sided, hand-written, A4-size "cheat-sheet"  with you into
the exam room. No photocopies are allowed, make sure that it is written your own 
hand-writing.
  
    | Chapter 1: Background | read introduction | 
  
    | Introduction | ALL | 
  
    | System Software and Machine Structure | ALL | 
  
    | The Simplified Instructional Computer (SIC) | SIC machine architecture,  Review SIC/XE machine
      architecture (Instruction Formats and Addressing Modes only),  SIC
      programming examples only. | 
  
    | Traditional (CISC) Architectures | -- | 
  
    | RISC Architectures | -- | 
  
    | Chapter 2: Assemblers | read introduction | 
  
    | Basic Assembler Functions | ALL | 
  
    | Machine-Dependent Assembler Features | Read through or refer to introduction and instruction formats and addressing modes.
      when necessary (they describe indirect addressing with @, immediate
      operands with #, 4-byte extended format with +, preference of relative
      addressing modes over direct mode during XE assembly for easing
      relocation. Program relocation (concentrate on Modification records, note that most
      addresses in object code in Fig.2.8 are relative except three. You are not
      required to know how to translate but you should be able to interpret
      (i.e., infer the meaning of) such an XE object code. | 
  
    | Machine-Independent Assembler Features | Literals NOT included, Symbol-Defining Statements (EQU only), Expressions, Program
      blocks (concentrate on USE, directives and LDA instruction at line 20 in
      code),
      control sections and program linking (concentrate on CSECT, EXTDEF, EXTREF
      directives and +JSUB) Know how the included things are handled by the assembler w/o going
      into detail of XE. | 
  
    | Assembler Design Options | One-pass assemblers, multi-pass assemblers | 
  
    | Implementation Examples | -- | 
  
    | Chapter 3: Loaders and Linkers | read introduction | 
  
    | Basic Loader Functions | ALL | 
  
    | Machine-Dependent Loader Features | Relocation (Fig.3.4: concentrate on +JSUB instructions, rest
      are relative instructions), program linking (understand the difference bw
      different addressing modes, concentrate on  REF1, REF2, REF4, REF8
      only, and understand why their values are the same in all subroutines), algorithm and data structures (except using
      ref.numbers for efficiency) | 
  
    | Machine-Independent Loader Features | -- | 
  
    | Loader Design Options | -- | 
  
    | Implementation Examples | -- | 
  
    | Chapter 4: Macro Processors | read introduction | 
  
    | Basic Macro Processor Functions | -- | 
  
    | Machine-Independent Macro Processor Features | -- | 
  
    | Macro Processor Design Options | -- | 
  
    | Implementation Examples | ANSI C Macro Language | 
  
    | Chapter 5: Compilers |  | 
  
    | Basic Compiler Functions |  | 
  
    | Machine-Dependent Compiler Features |  | 
  
    | Machine-Independent Compiler Features |  | 
  
    | Compiler Design Options |  | 
  
    | Implementation Examples |  | 
  
    | Chapter 6: Operating Systems |  | 
  
    | Basic Operating System Functions |  | 
  
    | Machine-Dependent Operating System Features |  | 
  
    | Machine-Independent Operating System Features |  | 
  
    | Operating System Design Options |  | 
  
    | Implementation Examples |  | 
  
    | Chapter 7: Other System Software |  | 
  
    | Database Management Systems (DBMS) |  | 
  
    | Text Editors |  | 
  
    | Interactive Debugging Systems |  | 
  
    | Chapter 8: Software Engineering Issues |  | 
  
    | Introduction to Software Engineering Concepts |  | 
  
    | System Specifications |  | 
  
    | Procedural Design |  | 
  
    | Object-Oriented Design |  | 
  
    | System Testing Strategies |  |