Computer Architecture and Systems Programming Lab
Online Information Index and Lecture Session Breakdown
(* UNDER CONSTRUCTION *)
Sketch of Lecture Sessions
- Class introduction - including sytems programming lab (week 1)
- Goals and expectations of this course
- Basic principles: what is a computer, basic
program execution, memory organization, what is an operating system.
- Low-level programming and some C language basics.
- Command interpreters (Systems programming lab, week 6)
- Operating on Data in Files (Systems programming lab, week 10)
- Accessing data in files: read/write and memory mapping.
- ELF file structure.
- Linking and loading.
- Basic low-level programming issues (weeks 2-5, 7, 8)
- Architecture design goals
- Assembly language programming basics
- Opcodes and instruction format
- Main opcode and modifier fields
- Fixed and variable length instructions
- Mnemonics for opcodes and the idea of assembly language
- 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.
- Machine instruction categories
- Data transfer operations
- MOVE instructions
- Exchange
- Repeated move instructions (strings)
- Special move instructions
- Arithmetic and logical operations
- Bitwise AND, OR, NOT, XOR
- Shift (logical and arithmetic), rotate
- Compare
- Negate
- Add and subtract (and extending the operands)
- Bit manipulation instructions
- Flag manipulation
- Bit and bit field manipulation
- Program flow control operations (branch, subroutine call)
- Branching addressing modes
- jump instructions
- Branch and conditional JUMP instructions
- Call and return instructions
- Looping instructions
- Input-output operations
- IN instructions
- OUT instructions
- Memory mapped input output systems
- I/O mapped input output systems
- Machine control operations and interrupts
- Protection support instructions
- Interrupts: hardware and software
- Atomic operations
- Special control operations
- Pseudo-operations and the process of assembly and linking
- Defining space for variables
- Defining constant data
- Initial addresses for code and data
- Defining constants
- High-level language support
- Parameters, local variables
- High-level language calling convensions
- Architecture support for high-level languages
- 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
- Machine control operations and interrupts
- Protection support instructions
- Interrupts: hardware and software
- Atomic operations
- Special control operations
- Monitors and debuggers: debugging low-level programs
- Viewing and modifying registers and data
- Running, single-stepping, breakpoints
- Trace and watch
- Symbolic debuggers
- Advanced low-level programmaing issues (weeks 9, 12-15)
- Co-routines and "processes"
- Using several stacks
- State of computation ("process")
- Re-entrant code
- Transfer of control: RESUME operation
- Position-independent code
- Self-modifying code
- Executable file computer viruses
Online Material
- Slides for week 1 lectures (architecture, SPLAB), course introduction (pdf),
basic principles (pdf), .
- Slides for week 2-3 lectures (architecture), basics (pdf),
(Instruction formats and addressing modes postscript,
pdf),
(Instruction categories postscript,
pdf).
- Slides for week 4-5 lectures (architecture), (postscript, pdf).
- Example co-routine code
main.c
and co.s.
- Example
assembly code with macros, and resulting
listing file.
- Files used in
class on position-independent code.
- Slides for
class on codes and communication, pdf).
Back to main page of this course
Back to BGU CS HomePage