Computer Architecture
CSC 364, Fall 2004
Class Homepage
(If your browser blocks pop-ups, click
here to see the "What's New" window.)
Project Proposals
A QTable example

A Memory Module. This module implements a simple widget
with a QTable to represent the internal memory words
Project
-
Dealing with textEdits

A module illustrating how to read text from a textEdit,
process it, and put it back in the edit window.
Project
-
Debugging

A module illustrating how to setup a simple debugging
facilty where a vertical splitter partitions the form into 2 areas,
one at the top with the widgets of the application,
and the other one at the bottom,
collapsible, hiding or showing a window with debugging
information.
Project
-
Solution for Hw #2
The files for this project can be found
here.
-
Solution for Hw #3
The files for this project can be found
here.
-
Using multiple forms

A demo of a simple application
using two forms. The closeEvent() slot of the main form is
reimplemented. This slot is always called when a form is closed.
By reimplementing it, we can make this action also close other forms.
-
A Starbucks-scheme dial
A demo of a simple dial.

Can be used
for keeping track of cycles in the simulator.
Project.
-
Adding options to menus
A demo used in class for adding an option
to a menu.
Executing other programs from a Qt application
A demo illustrating how to start other programs
from Qt. Can be used to open up a Web document for a help page, for
example.
Sounds
A demo illustrating how to associate sounds with
various events. You can find a collection of .wav files,
including spoken numbers,
here.
-
Moving widgets dynamically
A demo illustrating how to make widgets
change position in a frame.
Event-driven simulation
A demo illustrating how to run a simple
event-drive simulation. Some good information on discrete event-driven
simulation can be found
here,
and interesting demos here.
A simple assembler

This demo
shows how to use nasm as a preprocessor to generate
opcodes for a simple instruction set. Make sure the file
macros.asm and the program
nasmw.exe (Windows version of nasm) are in the same directory as
your project. Chapter 4 of the
nasm assembler is a must-read to understand what goes on with this
project!
Embedding binary files in the executable

How to embed images into projects: the idea is that instead of having
to distribute the exe version of your program along with all the
jpg, png, or gif files it will use, you can embed all the images
in the exe file. This makes for a larger footprint for your program
in memory, but has the advantage of allowing you to distribute only
one file: the exe file (and also the dll, of course). In this demo
the image of the fish along with the orange cursors used for the buttons
are embedded in the exe file. The wav file played when the form opens
is also embedded in the executable.
The header file
embeddedImages.h
file is created by qembed.exe and is included in the project.
You will need to compile the
qembed utility in the tools section of Qt to use this feature.
Project.
Restoring form geometry at startup

Demo for making a form remember its last position and size (geometry)
on the screen
Project.
Adding an icon to the application

Demo showing how to add an icon to an application. Works best with
32x32 png icons. All you need is an icon (upman.ico here), a
resource file containing just line identifying the icon as the
application's icon (appWithIcon.rc), and a line in the project
(.pro file) identifying the resource file as being part of the project:
Project.
IEEE Floating-Point illustrator

Demo to explore the storage and representation of floating point numbers.
Project.
- 9/10/04: read or re-read Trolltech's
white paper. The first 5 sections are important.
Pay close attention to the definition of widgets
in Section 2,
the different approach to writing a "hello world!" program,
and to Signals and Slots. Sections 6 and up are
interesting, but will probably be less important for our class.
Still good reading, though!
- For 9/15/04, read the first paper of the semester:
The First Draft Report on the Edvac,
by John von Neumann. Read only Sections 1 to 6.2, included. Try to
recognize the different computer parts proposed by von Neumann, and
to identify them with parts you know of today's computers. Here are
other questions for you to keep in mind while reading the paper
- What are the main applications von Neumann is interested in?
- What aspects of the paper show von Neumann's visionary qualities?
- What parts of modern computers are missing from the description?
- Look at the argument made in Section 2.4.c. What is it driven by?
- What do you make of the neuron analogy of Section 4?
- 9/20/04: Start reading Chapter 5 of the text book. Stop at Section
5.5 on cache memories.
- 9/29/04: we are covering material from Chapter 7 in Hamacher.
The whole chapter is good reading. Don't get stuck on details, and
read on to get the overall picture.
- For 10/4/04, read the second paper for this semester:
The Case for the Reduced
Instruction Set Computer, but Patterson and Ditzel.
Here are a few questions to help you focus on the paper
- Why were/are designers designing complex instruction sets?
What drives this choice? What are the advantages? How
did it start?
- What were the signs that reducing the instruction set
might be worth trying?
- What are the advantages of reducing the instruction set?
- What are Patterson and Ditzel arguments for people stating
that Complex Instruction Sets better serve High Level
Languages?
- 10/15/04: You can now read the remainder of Chapter 5!
- 11/1/04: Pipelines are in Chapter 8.
- 11/13/04: The multiplication and
division algorithms are
covered in Chapter 6 of Hamacher.
- 11/13/04: We started I/O operations on 11/12. Chapter 4
of Hamacher deals with I/Os. The parallel port, which we
are starting with, is covered in Section 4.6.1.
This page covers the technical aspects of
simple parallel ports in an easy to understand way.
Instruction Sets
Tutorials
General Links
Third Party Libraries
- For 2D sientific plotting there is
Qwt,
Qt Widgets for Technical Applications.
- If you require 3D plots, look at
QwtPlot3D.
Forks