-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Thomas Russell Murphy edited this page Apr 25, 2015
·
9 revisions
This is the yams wiki. It's a good place to put things like coding conventions and API information.
Assignments are general and collaboration is important.
- Final Socket implementation: due 27 March, by Jeff
- Establish calling convention: due 27 March, by all
- HTTP request parsing: due 10 April
- String methods -- Stephen
- HTTP business logic -- Jeff
- HTTP response building: due 24 April
- Additional string methods -- Stephen (contact for more)
- Invalid request method case -- Andrew/Jeff
- File finding and loading -- Thomas
- Invalid URI case -- Andrew/Jeff
- Valid URI case -- Andrew/Jeff
- HTML+Content files to serve: ongoing as HTTP features developed
- Basic, static, single-page HTML -- Thomas
- Static, multi-page, linked HTML -- Aaron
- Addition of visual effect media (CSS, JS) -- Andrew
- Addition of binary media (images) -- Stephen
- Stretch features: as time/difficulty allows
- Config file with redirects, custom port
- Magic POST field for Brainfuck interpretation
- Implementation of Brainfuck interpreter as backend to POST
- Presentation: due 4/23, by all
- Whatever we are presenting
- Report: due 5/1, by all
- String Functions - talk to @brenns10 about these.
- Arguments go into
$a0-$a3
(overflow pushed to stack). - Functions should be called with the instruction
jal
(jump-and-link), which does a jump, and sets$ra
to the next instruction. - If you make a function call, you'll need to push your function's return address to the stack. We have macros for that -
push($ra)
will push, andpop($ra)
will pop. - Also, respect the register use convention. Any registers you want to save, which are not preserved across a function call should be pushed to the stack.
- The only things really preserved across function calls are the saved temporaries (
$s0-$s7
) and the global/stack/return pointers. - Expect that everything else could get smashed.
- The only things really preserved across function calls are the saved temporaries (
- Return from functions using
jr $ra
. - Put return values in
$v0-$v1
(overflow could get pushed to stack). - Make sure that the stack is in the same state when you return as it was when you were called (barring any overflowed args or return values).
-
.include
assembly files containing macros at the top. -
.include
assembly files containing code at the bottom. - Useful
.data
section specifiers:-
.asciiz
- For a null terminated string. -
.ascii
- For a string with no null terminator. -
.space
- Empty space (in bytes).
-