Computer Science 281
Exam 1 Review
Cavaet: Although I do not intentionally leave out material
from exam reviews, you will be responsible for all material covered
for this exam period, including reading, lectures, and homework. If
you do spot an ommission in the following, please do let me know.
The following is intended only as a guide for your study. Although
some exam questions may be similar to the items listed below, this
review is intended primarily to guide your study.
The first hour exam will be held on Friday, Feb. 20, and will
cover chapters 1 through 3 of Paul, together with material on binary
numbers. You may also find chapter 1 of Tanenbaum together with sections 3.1 and
3.1 (also included in the notes) useful in your review. You should certainly
review the homework assigned as well. Week01.ppt - Week04.ppt contains the
material we have covered.
Basic architectural issues:
- Be able to discuss the notion of levels of virtual machines,
and describe where assembly language programming enters into the
picture (Tanenbaum).
- Be able to describe (in very general terms) an accumulator
machine, a stack machine, and a load/store machine. I may give you
a few instructions for one of these machines and ask you to write
the code to do a calculation.
- Be able to give a brief description of pipelineing and say why
it is useful. Be able to say why nop's are occasionally necessary and what
annulled branches are and how they may be used.
Compile/Assemble/Link:
- The process of creating and running a program under Unix is a
bit different than our earlier experiences with Visual C and
JCreator. Be able to write down the appropriate Unix commands to
compile and link a C main program with an assembly language
subroutine, and be able to say what the link editor does.
Assembly language programming:
- Be prepared to write a complete assembly language subroutine
along the lines of the programs we will have written before the
exam.
Although I am generally more forgiving of syntax errors (to an
extent) than is the assembler, you should be as accurate in syntax
as possible. We currently are using a very limited set of
instructions, so a sheet of assembly language statements will
probably not be provided for this exam (it may possibly be
provided in later exams when we have a larger set of instructions
to worry about).
- Be able to list the three basic sets of control structures,
and show how they may be implemented in assembly language.
- Be able to perform bitwise logical operations on integers,
including and, andn, or, xor.
Data Representation:
- Be able to show the internal representation of 2's complement
integers,
and to take a 2's complement representation and return the usual representation. Answers for
binary data should be in hex.
- Be able to multiply and divide (long division) in binary,
showing your work.
Digital circuits:
- Be able to work with truth tables
- Be able to construct an inverter, nand gate, and nor gate from
transistors (first part of Tanenbaum, chapter 3: also in
notes)
- Be able to construct circuits using inverters, NAND, NOR, AND,
and OR gates.
- Be able to systematically construct circuits from truth tables using AND,
OR, and NOT elements.
- Be able to interpret outcomes of digital circuits (at the
level we have examined them so far).
- Be able to draw diagrams of the circuits we have met so far
either in the text or in homework.