Organization and use of computer systems. Basic concepts and examples from microcomputers and networks, peripheral components, data communications, and the relationship between hardware components and the operating system.
All assignments are due at, or before, 23:59:59 in US/Central time on the dates specified. The timestamp of the assignment submission shall be used to determine when you handed it in.
isprint()
)Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
DANGER WILL ROBINSON! Developing and testing your assignments on your own PC is encouraged.
However, your grade is based solely on our ability to build and run your program on hopper.cs.niu.edu
as described in the assignment handouts!
Therefore, it does not matter if it runs OK on your own system.
A program that fails to build or run on hopper.cs.niu.edu
will be graded as such.
You must test your program on hopper.cs.niu.edu
before handing it in.
[On Windows, you can install WSL & Ubuntu and then use one of its terminal windows to do development and testing of Linux code on a Windows PC.]
But... you must still test your program on hopper.cs.niu.edu
before handing it in.
stdint.h
(The first half is most relevant here. The second half is useful for debugging numeric overflow problems.)Bonus!! Some reviews for those that forgot how to do this!
std::cin
(Review)std::cout
(Review)string
classgetopt(3)
(bonus lecture!)getopt(3)
is a standard library helper function for parsing
command-line options.
How to use assert(3) to protect your code from itself!
The idea behind using assertions (and/or exceptions in C++) is to check arguments
and variables in your code to make sure that they are not corrupted by errant code
elsewhere in your application.
Note that assert is for checking against program logic problems. NOT for checking user errors! Some times the difference can get blury. When in doubt, report a regular user error message and terminate your application gracefully. assert() will terminate your application ungracefully.
How to use valgrind(1) to check for corrupted memory
Valgrind is incredibly useful for verifying that a program has not corrupted
its memory while it runs. This includes things like writing past the end of an array
and forgetting to delete
objects (that were previously created by calling
new
) when they are done being used.
ALWAYS valgrind your homework as part of normal debugging and testing before handing it in.
A number of good resources are available with discussions of the topics discussed in this course. Here are some popular ones.
Lectures:
Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
stdint.h
typedef
!Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
Note that there are more types of latches and flip-flops than I will discuss in this course. If you look around the web for more information you might find yourself confused if you run into those other types. Here are some links that discuss this subject using D-Latches:
Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
I was always confused why the common term for the von Neumann machine was to refer to it as an architecture when the topic is actually referring to its organization.
The so-called von Neumann architecture might be easier to understand when discussed in the same context as an alternative approach that is referred to as the Harvard architecture.
Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
The following two lectures turned out to be way longer than I had expected. I post them here if you are interested in the details connecting combinational and sequential circuits with finite state machine concepts to design a viable RV32I processor. The content in these two lectures will not appear in quizzes nor exams.
Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
hopper.cs.niu.edu
the RISC-V compiler seen in lecture has been installed here:/home/research/riscv32/install/rv32i
rvddt
github project on hopper like this:
git clone https://github.com/johnwinans/rvddt.git
cd rvddt/src
make world
cd ../examples
Make.rules
file to this:GNU_DIR=/home/research/riscv32/install/rv32i
rvddt
project with a 'fixed' Make.rules
file on hopper here:/home/hopper/winans/csci463/rvddt
rvddt
example programs as templates to create your own RISC-V programs to test your own simulator.Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
Note: The IPC and Advanced IPC tutorials are shared below under the 4-Clause BSD copyright.
Questions/comments/corrections and source code for RVALP and other handouts can be found on github.
Last modified: 2024-12-09T15:21:06+00:00