- Lectures and tutorials
- Recordings
- Submitting homework
- Class schedule
Always submit something for each assignment by the due date and time, even if you have not done anything. In that case, your self-grade is 5. If you fail to submit anything on time you will be failed (unless you provide proof of a medical or family emergency in a DM to me, no email please!).
Use the autograder to determine your grade. See the autograder's README.md for instructions.
No compiler warnings, please!
Modify selfie.c such that selfie prints your name right after initialization. Part of the assignment is to figure out how to do that.
- Do not modify any files other than selfie.c.
- Use the
print-your-name
target in the grader to determine your grade.
Hint: output_processing.py
Your message has to be prefixed like every other "status message" of selfie. So instead of printing:
This is <firstname> <lastname>'s Selfie!
, you have to print <selfie-path>: This is <firstname> <lastname>'s Selfie!
Implement the parser of a RISC-U assembler invoked by option -a
in selfie.
- Use the
assembler-parser
target in the grader to determine your grade.
Complete the implementation of a RISC-U assembler (option -a
in selfie) with support of code generation.
- Use the
self-assembler
target in the grader to determine your grade.
Implement support of processes in mipster and hypster.
- Use the
processes
target in the grader to determine your grade.
Implement support of fork
and wait
(for now with an unused dummy status argument) in mipster and hypster.
- Use the
fork-wait
target in the grader to determine your grade.
Implement support of fork
and wait
with proper support of the status and exit code parameters in mipster and hypster.
- Use the
fork-wait-exit
target in the grader to determine your grade.
Implement support of locking (lock()
and unlock()
).
- Use the
lock
target in the grader to determine your grade.
Implement support of threads (phtread_create()
, pthread_join()
, and pthread_exit()
).
- Use the
threads
target in the grader to determine your grade.
Make the current malloc()
implementation thread-safe by implementing support of and using the atomic instructions lr
and sc
in RISC-U. This requires implementing support of load-reserved and store-conditional routines as well (lr()
and sc()
).
- Use the
threadsafe-malloc
target in the grader to determine your grade.
Implement support of the Treiber stack (init_stack()
, push()
, and pop()
).
- Use the
treiber-stack
target in the grader to determine your grade.