Computer Systems Organization I (Honors)
Prof. Ralph Grishman
Tues/Thurs 11:00 - 12:15
Courant Institute / Warren Weaver 101
Prof. Ralph Grishman
715 Broadway, Room 703
office hour: Thursday 2:15-3:15
This course is primarily an introduction to machine language, and in particular,
two machine languages: the Intel x86 architecture and JVM, the Java
Virtual Machine. The study of x86 will provide an understanding of
how a real (and ubiquitous) machine works, while the study of JVM will
provide some insight into the Java language and its implementation.
We will also briefly look at some aspects of C related to the study of
machine language: its memory model and use of pointers, and also
briefly look at some recent developments in high performance computer architecture.
Intel x86 Assembler: 9 classes
Java Virtual Machine language: 7 classes
C language: 3 classes
Alternative machine architectures: 5 classes
See the tentative syllabus for further details.
Note that this is considerably more material than is covered by the other
sections of this course -- more material than can be covered in class.
Students will be expected to learn a good deal of this material through
reading before each class session.
Grading for the course will be based equally
on examinations and assignments. There will be a mid-term and two
short quizzes; one larger programming project and 5 smaller assignments.
to the class mailing list. It will often have valuable questions
and answers about upcoming assignments and exams.
Then you can send mail
to the list.
The Java 2 Platform, provided by
SUN, includes a java compiler (javac) and a JVM implementation (java).
Jasmin is an assembler for JVM assembly language. The Jasmin
home page contains extensive information about Jasmin and JVM.
is a disassembler, which takes a JVM machine language program (a .class
file) and translates it into Jasmin assembly language.
x86 Assembly Language: students can obtain Robert Dewar's
Language Programming for the IBM PC at:
Cost of the course packet is about $21. Students should ask for the notes
for V22.0201 (Grishman / Hull). Some errata are listed here.
Unique Copy Center
252 Greene St.
C language: students who are not already familiar with C (or
C++) should get a text on C (for this course and subsequent courses in
the major); we have ordered copies of the classic text,
The C Programming
Kernighan and Ritchie
JVM Assembly Language: we will provide handouts and links to on-line
resources for JVM, so we have not ordered a JVM book. There are three (paperback)
books on the subject:
Java Virtual Machine,
Jon Meyer and Troy Downing (O'Reilly)
good coverage of JVM and Jasmin, and brief implementation notes; out
of print (some used copies available)
Programming for the Java Virtual
Machine, Joshua Engel (Addison-Wesley)
good coverage of JVM assembly programming and of compiling into JVM
uses Oolong assembler, based on Jasmin
Inside the Java 2 Virtual Machine,
Bill Venners (McGraw Hill)
most detailed, but not intended for writing JVM assembly code
Machine architectures: again, we will provide handouts for this
material; the best text covering this material is
Andrew S. Tanenbaum,