Material covered before midterm Sections and pages: C-1 to C-12, C-26 to C-31, C.7, C.8, C-58 to C-62, 4.1, 2.1-2.14, B.1, B.5, B.9, 2.15-15 thru 2.15-18 on CD_ROM, 2.17, files on class web site Topics Appendix C material + 4.1: bits, gates, primary and secondary memory, datapath, buses, ALU FETCH, DECODE, EXECUTE, WRITEBACK cycle (sometimes just called the FETCH-EXECUTE cycle) _ Boolean logic, Boolean algebra (+, *, , sum of products form, laws), gate implementation, multiplexor decoders ALU, adder (with carry), clocks, latches and flip-flops, registers, RAM, tri-state, Program Counter, overall architecture, (Fig. 4.2) 2.1-2.14, B.1, B.5, B.9: MIPS instruction set, RISC (Reduced Instruction Set Computer), CISC (Complex Instruction Set Computer) the 32 registers, arithmetic instructions, logical and shift instructions, data transfer instructions, conditional jump (branching) instructions, unconditional jump instructions add, sub, addi, lw, sw, addiu positional number systems, decimal, binary, octal, hexadecimal, conversion between these representations big-endian, little-endian two's complement, how negative numbers are represented, changing sign of an integer, sign extension arrays of words or bytes, base address, offset instruction formats (R, I, J), sll, srl, sllv, srlv, and, or, nor, andi, ori, j, jr, beq, bne, slt, sltu, slti, sltiu, other branching instructions including pseudoinstructions, directives such as .asciiz, .word, .space implementing loops, jump tables, procedure calls, use of jal and jr and $ra, how memory is divided into reserved, text, static data regions, and the dynamic region containing dynamic data and the stack pushing data onto the stack, accessing data in the stack, popping the stack protocol and conventions governing procedures, recursive functions iterative implementations, recursive implementations frame pointers (don't use unless you are changing the stack a lot in the middle of a procedure) procedure frame or activation record ASCII code, strings and their representation addressing modes (immediate, register, base or displacement, PC-relative, pseudodirect as in jal and j) synchronization, locks, ll and sc instructions in MIPS, atomic actions such as atomic swap and critical sections of code compilers, assemblers, linkers, loaders, object code modules and their format, executable code files dynamic linked libraries, how programs that use them modify their own links at run time using arrays vs using pointers 2.15 (4 pages on CD_ROM) Java byte code 2.17 x86 architecture