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: Tuesday 9:50-10:50
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, and
the problems of implementing programs across the Net. We will also
look at some aspects of C related to the study of machine language:
its memory model and use of pointers. Finally, if time permits, we will
briefly look at some recent developments in high performance computer architecture.
Intel x86 Assembler: 10 classes
C language: 4 classes
integrating assembler and C: 2 classes
Java Virtual Machine language: 6 classes
Alternative machine architectures: 2 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.
We will use the Dewar Assembler and Debugger to learn x86 assember:
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
For interfacing C and assembler, we will use excerpts from Paul Carter's
PC Assembly Tutorial,
which is uses the NASM x86
assembler and DJGPP C compiler.
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