Matthew Faltys
5 years ago
1 changed files with 31 additions and 0 deletions
@ -0,0 +1,31 @@
|
||||
# Project 1 |
||||
- You can see this project in action at https://git.unixvoid.com/mfaltys/CSCI-4350 |
||||
|
||||
The source code for this project is documented line-by-line but I will |
||||
go over a broad approach here. |
||||
|
||||
At the time of writing there are 2 functions: main and lookup: |
||||
|
||||
## Main |
||||
The main function takes some user input (for argument 2, the number to be found) |
||||
and stores it into register `$a1` (which is the argument register to send to lookup). |
||||
At the same time we set `$a0` and `$a2` which are the base address of array, and the |
||||
max index of the array to check (respectively). |
||||
When main is returned to after the lookup function it outputs the result |
||||
(either the index where the value is found, or `-1`) and prints it to screen. |
||||
The last thing main does is make the exit syscall to stop the program. |
||||
|
||||
## Lookup |
||||
The lookup function takes 3 arguments: `$a0`, `$a1`, `$a2` (mentioned above). |
||||
The first thing the function does is make a temporary register with a value equalling |
||||
one more than the maximum array index we will check |
||||
(this way we can determine if the function is out of bounds). |
||||
We then check for the out of bounds (oob) case and return a `-1` and jump back to where |
||||
we left in main (`$ra`). If we pass the oob check we continue the loop by finding the |
||||
current index in the array and comparing it with the value that was passed to us in `$a1`. |
||||
If we find the proper value we jump back to `$ra` while passing back the index where |
||||
we found it, otherwise we increment the array index counter and loop back to the |
||||
start of the lookup function. |
||||
|
||||
At the bottom of the program is where we store all our data values (hence the `.data` tag). |
||||
This is where the array and all our messages are to be used in the program. |
Loading…
Reference in new issue