Starting from:

$34.99

CSC3050 Project 1 Solution

The output should be a .txt file which contains the machine code of the corresponding input .asm file. I will provide you with a few input files and their corresponding output, so that you can test your program. Your code would be tested on a MacOS system or Ubuntu 16.04 system, whichever you specify. The compiler you need to use are gcc or g++, for C and C++ respectively.
Environment:
For Mac Users:
Check whether you have C/C++ Language installed on your mac. Open up your terminal, then type the following command: “clang --version”

If your Mac shows the version of C Language, that means you already have the environment to write this program. Otherwise, you will have to install Xcode on your Mac. Go to App Store on your Mac and search for Xcode.
After doing that, check again to see if you have the environment for C/C++. If you do, you can now begin to write your code.
For Windows Users:
There are multiple ways to obtain a Linux system on Windows. I would recommend using VMWare Workstation Pro. You can download a Ubuntu 16.04 image via http:// releases.ubuntu.com/16.04/. You can simply deploy it in VMWare Workstation.
Logic of the Project
There are many ways to achieve the goal of this project, I will provide one for you to think about in the rest of this section.
The basic idea is to break this project into two parts: the first part is to scan through the file, and find out where are the labels, such as “main”, or “loop”. For each label you find, you will need to save the data of what is the name of the label, and what’s its corresponding memory address. Then you will need to define a proper data structure to store them.
Then, there is the second phase, where you will need to use the information generated in the first part (stored in the data structure you defined) to output the final answer. More specifically, you can write a loop in which each iteration will process one line of the input file. For each line you read, you will need to identify which instruction it is, what kind of instruction it is (R, I or J), then generate the machine code corresponding to that information.
List of MIPS Instructions Your Code Needs to Support:
We will follow the appendix A of the text book, you need to support all the instructions from A51
to A71 that are NOT PSEUDO-INSTRUCTION and NOT CO-PROCESSOR
INSTRUCTION. Also, I would recommend you group them according to their R, I, J format, for the ease of translation.
Also, the register names and their corresponding register numbers are attached to the end of this document.
How to Properly Write Your Code:
You can use any IDE you like. However, make sure your code is executable in the required environment. Make sure all your files related to the program are under the same directory, including the testing input and output. Make sure your code is compilable using command line in terminal. For example: “gcc file1.c file2.c file3.c -o assembler”. This would produce an executable named assembler. Then, the executable should be able to be executed by the command “./assembler inputfile.asm outputfile.txt”, which user can specify which input file is used and what output file name is used. Your program should then produce a file with the output file name specified containing the machine code corresponded to the input file.
Project Report
You will need to write a report to tell me:
1. Your understandings of this project (what this project is doing)
2. How did you do it. More specifically, when you explain your way of doing it, make sure you start from the big picture idea. Explain the high level logic first, then go into details such as what kind of data structure is defined, etc. An example of explaining the big picture idea can be found in “Logic of the Project” part of this file. I did not explain why I did it this way, which you should in your report.
Your report should be typed, Times New Roman, 12pt, with your name on the front page. Your report should be in pdf file, I would not accept any other format.
Discussion Board
I will set up a discussion board on Blackboard after this is released. If you have any questions regarding this project, please post them on discussion board. I would check the discussion board daily after this project is released and answer questions. If you know the answers to some questions you see, you are more than welcomed to answer them for your fellow students. In most cases, I would not answer questions in the WeChat group, as last year students do not go through the chat history before asking, thus, repeating questions are asked a lot. This is not efficient, so I decided to use the discussion board for Q&As.
How to Turn in The Project



More products