CSCS2650 Computer Organization
PROJECT: DEBUG A PROGRAM (dap1)
OBJECTIVE
Extend our debugging infrastructure with the creation of a
_debugmemory subroutine.
TASK
Implement a Vircon32 assembly subroutine that uses your dap0 _debug
subroutine. Your task is to display a range of memory addresses, along
with their hexadecimal contents.
The starting and ending memory addresses are given as parameters via the stack.
Specifically, you want to call the subroutine _debugmemory, and
place it in your existing debug.s file so that both can be
%include'ed as needed in debugging efforts.
It will call _debug in the process of operation (let _debug
handle the display of information)
Of course: written entirely in Vircon32 assembly language, using no compiler-generated routines from the Vircon32 API (no print, no itoa, only the routines YOU write)
You will pass 2 parameters via the stack:
- starting address (first pushed)
- ending address (second pushed)
You want to make sure all register states preserved (ie whatever was going on before the call to debug must be preserved: save and restore)
Make use of the stack instructions PUSH and POP, although all stack access does not have to exclusively be via PUSH and POP
Try it out on some existing code, posting a screenshot (with context) to the class discord
In your code (via comments), provide usage instructions (what needs to be added to existing code to use your debug subroutine)
Modify _debug to "return" an updated X and Y coordinate (by
updating the value stored in the stack), so that _debugmemory can
POP and use it in its own processes.
Make sure to display any leading zeros in your output.
SUBMISSION
To be successful in this project, the following criteria (or their equivalent) must be met:
- Project must be submit on time, by the deadline.
- Late submissions will lose 33% credit per day, with the submission window closing on the 3rd day following the deadline.
- Processing must be correct based on input given and output requested
- Output, if applicable, must be correct based on values input
- Code must be nicely and consistently indented and aligned
- Code must be consistently written, to strive for readability from having a consistent style throughout
- Code must be commented
- Sufficient comments explaining the point of provided logic MUST be present
- Track/version the source code in your private semester repository
- Submit a copy of your source code to me using the submit tool by the deadline.
SUBMIT TOOL USAGE
Let's say you have completed work on the project, and are ready to submit, you would do the following (once on LAB46, with all your data present):
lab46:~/src/SEMESTER/comporg/dap1$ make submit
You should get some sort of confirmation indicating successful submission if all went according to plan. If not, check for typos and or locational mismatches.
RUBRIC
I'll be evaluating the project based on the following criteria:
234:dap1:final tally of results (234/234)
*:dap1:submitted file called debug.s or debug.asm [13/13]
*:dap1:subroutine is called _debugmemory or __debugmemory [13/13]
*:dap1:code assembles with no warnings or errors [26/26]
*:dap1:parameters obtained, modified in the stack [26/26]
*:dap1:register states preserved across call [26/26]
*:dap1:debugging subroutines use stack instructions [26/26]
*:dap1:screenshot of subroutine in action to DISCORD [26/26]
*:dap1:code contains usage instructions in comments [26/26]
*:dap1:output contains display of addresses, contents [26/26]
*:dap1:functionality is correct and to specifications [26/26]
ADDITIONALLY
- Solutions not abiding by spirit of project will be subject to a 50% overall deduction
- Solutions not utilizing descriptive why and how comments will be subject to a 25% overall deduction
- Solutions not utilizing indentation to promote scope and clarity or otherwise maintaining consistency in code style and presentation will be subject to a 25% overall deduction
- Solutions not organized and easy to read (assume a terminal at least 90 characters wide, 40 characters tall) are subject to a 25% overall deduction