Disassembling Machine Language
Machine language and instruction set architecture (ISA) are integral to the design and architecture of a processor. They serve as an interface between higher-level programming languages and the underlying hardware platform.
This aim of this assignment is to further develop your understanding of ISA by tasking you to develop a disassembler for the Y86 ISA.
2. Learning Outcomes:
On successful completion of this assignment, you will meet the following learning outcomes.
Knowledge and Understanding Outcomes
3. Describe how data are represented in computers
Ability Outcomes
4. Construct solutions to problems related to computer systems and their components
6. Develop a small computer with a minimal instruction set
3. Assessment Brief
You will be given a partially completed y86 disassembler written in C. Your aim is to complete its functionality so that it is able to disassemble all instructions defined in the y86 architecture.
To help you better manage your work, the disassembler functionality is further divided into the following three levels of challenges: Basic, Intermediate and Advanced.
Basic Level:
• Ability to correctly disassemble machine op code.
Intermediate Level:
• Ability to correctly disassemble register-based operands.
Advanced Level:
• Ability to correctly disassemble immediate values and memory addresses operands.
It is strongly recommended that you approach the implementation progressively based on the degree of challenge. Test cases will be provided so that you can use them to evaluate the correctness and completeness of your implementation.
4. Marking Scheme
The total attainable marks from this assignment is 100, which is further granulated based on the following table. Marks will also be awarded for partially correct solutions.
* (1) Solution correctness (80%), which is measured by how well your program outputs match the expected outputs of multiple test cases;
* (2) Effective use of C programming features (20%), where applicable, which may include Bitwise Operators, Conditional Statements, Loops, Arrays, and Functions.