100% Guaranteed Results


CSE 220: Systems Fundamentals I Solved
$ 24.99
Category:

Description

5/5 – (1 vote)

Programming Assignment#l
Updates to this Document
9/812020: There was a mistake in the first example of Part S on gage 13. It has now been correcte d.
9/812020: A new example of High Card has been added to the examples in Part S on page 13.
Learning Outconws
After completion of this programming project you should be able to:
• use system calls to print values to the screen in different formats.
• Design and iinp ement algorithms in MIPS assem.b y that involve if-statements and counter-driven oops.
• Read and write valUes stored in a MIPS assembly -data section.
• use bitwise operations to perform simple computations in MIPS assembly.
Getting Started
Visit the course website and download the files hwkl .asm and MarsFa112020.jar. Fill n the following information at the top of hwkl .asm:
1. yourfirst and hst name as they appear in Blackboard
2. your Net 10 (e.g., jsmith)
3. your stony Illsgggggj
Inside hwkl.asm you will find some code to start with. Your job in this assignment is implement all the operations as specified below. If you are having difficulty implementing these operations, write out pseudocode or ementthe algorithms in a higher-level anquage first. Once you understand the algorithm and what steps to perform, then translate the logic to MIPS assembly code.
Important Information about CSE 220 Programming Projects
Read the entire project description document twice before starting. Questions posted on Piazza whose answers are clearly stated in the documents will be given lowest priority hy the course
You must use the Stony Brook version of MARS posted on the course website. Do not use the version of MARS posted on the official I•AAR.S website. The Stony Brook version has a reduced instruction set. added tools, and additional system calls pu might need to complete the homework assignments.
When writing assembly code. try to stay consistent with your formatting and to comment as much as possib e. It is much easier for your TAs and the pro essor to help you ifwe can quickly figure out what your code does
Da not capy or share code. Your subm s:sions will be checked against other submissions from this semester and from previous semesters
How Your CSE 220 Assignments Will Be Graded
With few exceptions. all aspects of your programming assiOnments will be graded entirety through automated means. Grading scripts will execute your code with input valUes (e.g.. command-line arguments. function arguments) and will check for expected results (e.g.. print-outs. retum values. etc.) For homework assignment your grogram will be generating output that will be checked for exact matches by the grading scripts. Therefore, it is inveratlve that you ÅT.p ement the “print statements” exactly as specified in the assignment.
Some other items you should be aware of:
Each test case must execute in 20,000 instructions or fewer. Efficiency is an important aspect of programming. This maximurn instruction countwil be increased in cases where a complicated algorithm might be necessary. or a large data structure must be traversed. To find the instruction count of your code in MARS. go to the TOols menu and select Instruction Statistics. Press the button marked Connect to MIPS. Then assemble and run your code as normal.
Any excess output from your program (debugging noÄ etc,) will impact grading_ Do nat leave erroneous print-outs in your code
We will provide you with a small set of test cases for each assiOnment to give a sense of how your work will be graded. It is your responsibility to test ‘”Jur code thoroughly by creating your own test cases.
The testing framework we use for grading yaur wark will not be released, but the test cases and euected results used for testing will be released
Configuring MARS for Command-line Arguments
Your program is go ng to accept command-I ne arguments, which will be provided as input to the program. TO tell MANS that we wish to accept command-I ne arguments, we must go to the Settings menu and check the box marked:
Program arguments provided to the MIPS program
While youre at it, also check the box marked’
Initialize Program Counter to globat ‘main ‘ if defined
After assembling your program, in the Execute tab. you should see a text box where you can type iri your command-line arguments before running the program
Edit Execute
Text Segment
Program Argum •nts:
The command-line arguments must be separated by spaces. Note that your program must always be run with at least one command-line argument. When your program is assembled and then run, the arguments to your program are placed in main memory before execution. Informat on about the arguments is then provided to your code using the argument registers. and ial. The register contains the number of arguments gassed to your program. The Sal register contains the starting address of an array of strings. Each element in the array is the starting address of the argument specified on the command•l ne.
All arguments are saved in memory as ASCII character strings. terminated by the null character (ASCII O, which is denoted by the character in assembly codeb So, for example, ifwe want to read an integer argument on the command•ine, we actually must take a string of digit characters (e.g.. ” ZOE 4 and then convert to an integer ourselves in assembly code We have provided code for you that stores the addresses of the command-line arguments at pre-defined, unique labels (e.g., acids_arga, adcir_ergl, etc.) Note that the strings themselves are not stored at these labels. Rather, the starting addresses of the strings are stored at those labels. You wil need to use load Instructions to obtain the contents of these strings stored at the addresses: iw to load the address of a string, then multiple ibu instructions to get the characters. For Instance, 1K *so, adds arg2, followed by $tcr [$80’ wouldstore me character located at index 4 in (assuming O.based indexes) ofthe mird connmand line argument-
Running the Program
Running the provided hwkl .asm tile is prety s mple_ Hit F3 on the keyboard or press the button shown below to assemble your code:
Any output generated by your program will appear in the Run I/O panel at the bottom of the window
Part 1 : Validate the First Command-line Argument and the Number of Command-line Arguments
For this assignment you will be mplementing several operations that perform computations and do data man pulatlon
Later in the document is a list of the operations that your program will execute. Each operation is identified by a single character. The character is given by the first command-line argument (whose address is The parameter(s) to each argument are given as the remaining command-Ine arguments (located at addresses addr aryl, etc)_ In this first part of the assignment your program must make sure that each operation is valid and has been given the correc:t number of parameters_ Perform the validations in the following order:

The first command-line argument must be a string of length one that consists of one ofthe fol owing characters: 1, 2, S, F, R or P. If the argument is a letter. it must be given in uppercase. If the argument is not one of these strings or if the argument contains more than one character, print the string found at label and exit the program (via system ca 1 10). This string contains a newline character at the end* so you do not need to provide your
2. The 1 2 and S operations expect two additional arguments. Ifthe tota number of command-line arguments far these commands is nat three, printthe string found at label error and exit the program (via system call 10). This string contains a newline character at the end, so you do not need to provide yaur own.
3. The F operation expects one additional argument If the total number of command•line arguments for this command is not two, print the string found at label invalid_args_ersaz and exit the grogram (via system call 10}. This string contains a newline character at the end, so you do not need to provide ‘”Jur own.
4. The R operation expects six additional arguments. If the total number of command-line arguments far this command is not seven, print the string found at label error and exit the program (via system call 10). This string contains a newline character at the end, so you do not need to provide yaur own.
ae sure to initialize all of your values (e.g., registers) within your functians_ Never assume registers or memory will hold any particular values (a_g_. MARS initializes all of the registers and bytes of main memory to zeroes. The grading scripts for later assignments wil fill the registers and/or main memory with random values before executing your code
Later sections will eulain how to validate the arguments for each operation
Examples of Invalid Input
See the later sections af the documents for explanation of what arguments are valid for each operation.
Command-line Arguments Label for String to Print Expected Output
OCOE 32 invalid opera t: ion error
p HIJKL invalid operation INVALID OPERATION
F XYZ ABC inMA lid INVALID
Character Strings in MIPS Assembly
In assembly, a string is a one-dimensional array of unsigned bytes. Therefore, to read each character of the string we typically need to use a OOP. Suppose that contains the base address of the string (that is. the address of the first character of the string). We cwd use the instruction Ibu $ to, 0 to copy the first character of the string into 0. To get the next character of the string, we have two options: (i) add 1 to the contents of $sO and then execute Ibu $70, D again, or (ii) leave the contents of alone and execute Ibu Sto, 2 Generally speaking, the first approach is easier and simpler to use, but the other approach works perfectly fine ifthe string is short in length is always thesamve enqth. Note thatsyntaxllke Ibu El. is not valid. an immediate value la constant) must be given outside the parentheses.
Next Process the Input
If the program determines that the first command-line argument is a valid operation and that it has been given a correct number of additiOna arguments. the program continues b} executing the appropriate operation as specified below. Note that you are permitted to add code to the -data section as necessary to implement these operations.
Part 2: Process a String of Four Hexadecimal Digits that Represents a Signed Integer
The 1 2 and S operations treat the second command-line argument as a string of hexadecimal digit characte’rs — •A’ — that represent a signed one’s complement number, two’s complement number or sign/magnitude number, respectively’ The leftmost character represents the most significant nibble (4 bits) of the integer. The operation converts the string into a 32•bit signed integer in two’s complement, storing it in a single register. The code then prints the N rightmost bits of that register, where N is given by the third argument. In other words, the integer is printed as an “Wbii, two’s complement value. Finally, the code prints a newline character j. The numberof bits to print given by the third argument should be at least 16. Helpfu hint you can give an ASCII character as a literal in M PS (e.g.,
There are different a gorithms you can devise to implement this operation. To get started, think of how you would convert characters like and ‘D’ from the binary ASCII values 701’„0211 and
01 respectively, to the binary values 0121 and 1101, respectively. Also explore how pu can extract individua bits from a register using bitwise operators.
First command- ine argument: the character 1 , 2 or S
Second command-line argument exactly four characters that represent hexadecimal digits
6
Third command-line argument: a number of bits* 16 ands 32
Input Validation
Worked-out Exannple
Suppose the command-line arguments are These arguments indicate that the string represents a one’s complement value and that we want to print out the two’s complement representation of that value using 25 bits.

Exampl es
Command-line Arguments Expected Output
2 FFF&
2 OOLI 25 oaooaoaooaoaooaoaoouaool
2 7EA2
1 FYFE
1 25
1 4190 32
S OßOE 22 coogocoogocoogocoolllo
7
s 20
S OOF’? 19
IWÅLIL’ ARG3
1 WOLE 28
S OIFI 05 IUVALID ARCS
Part 3: Print a Decimal Fixed-point Number as a Binary Fixed-point Number
The fractional part of the input number will always represent a value that can be computed by adding some wmbination of the values 0.5, 0.25, 0.125. 0.0625 and 0.03125 [that is, 2′ and (This accommodation makes It possible to convert the fractiona decimal value to binary using only integer arithmetic.) The output value must always contain exactly five bits to the right of the radix point.
• First command-line argument the character F
• Second command•line argument exactly three decimal digits characters, followed by a period, followed by exactly five decimal digit characters
Input Validation
Exannples
Command •line Arguments Expected Output
10011D01ßa.1011D
006-40623 110.01101
0.10100

IOOßL.OOÜOC
1±5.18750
Part 4: Encode Six Numerical Fields as an R-upe MIPS Instruction
The R operation takes six decimal values, treats them as the six fields af a MIPS R-type instruction, and. using shifting and masking operations, combines the faur values into a single 32-bit integer that represents an R-type nstruc:tion_ The program then prints this value in hexadecimal using syscall 34. Finally, the code prints a newline character ( n ‘ i. An example will helpto c arify this process
First command-I ne argument: the character R
Second command-line argument the string •00″
Third command-line argument: a string that encodes a positive, two-digit decimal integer in the range 311 (the rs field). A leading zero is provided if needed
Fourth command-line argument: a string that encodes a positive, two-digit decimal integer in the range 311 (the rt field}. A leading zero is provided if needed.
Fifth command-I ne argument: a string that encodes a positive, two-digit dec mal integer n the range 311 (the rd field) A leading zero is provided if needed.
Sixth command-line argument: a string that encodes a positive, two-digit decimal integer n the range 311 (the shamt field). A leading zero is provided if needed
Seventh command-line argument a string that encodes a positive, two-digit decimal integer n the range 63) (the functfield)_ A leading zero is provided if needed_
A 32-hit R-type instruction consists of 6 fields, where the number be ow each field indicates its width in bits_ Nate that bit #0 is the rightmost bit
Field opcod e rs rd shamt funct
# of bits 6 5 5 5 5 6
Suppose the command-line arguments were the strings
R 15 17 03 14 29
The program must process each numerical argurnent in turn, converting each ot the six strings nto an integer. Remember that all data in a computer is stored in binary, so, after conversion, these values will be stored as the 32.bit values given below:

as the opcode, rs. rt. rd, shamt and func:t fields, respectively Next. using
bitwise operations, we need to concatenate the six rightmost hits of the opcode, five rightmost bits of the rs, rd and shamt fields, and 8 rightmost bits ofthe funct field:
When printed in hexadec mal, the outputva ue (produced by syscall 34) wi” be
Input Validation
Note that the shamt fie d is app icahle only when performing a shift nstructiom You do not need to check whether a non-zero shamt amount is given when a non-shifting instruction is provided. Simply have your code convert the shamt argument to a 5-bit binary regardess af what the funct fie d is, and incorporate that 5-bit value in the final 32-bii value computed by your coda.
Exannples
Command-line Arguments Expected Output
15 14 OK01f11b±d
31 24 a: 42
R 22 25 El OK02d9f83d
17 41 22 3D 08
Part S: Identify Non-standard, Five-card Poker Hands
The P operation treats the second command-line argument as a string of exactly five characters that encode a non-standard five-card hand from draw poker_
The program must be able to identify some of the non-standard hands of five-card draw poker and print a message indicating which one it found. If the hand can be matched with two or nwre hands, the hand of highest rank is printed. If none of these five ranked hands is identified. the program prints
The hand ranks from highest-to-lowest, along with the relevant MIPS string to print, are:
Rank Hand Name Label for String to Print Output on Screen
Big bobtail bobtail ser BOBTALL
2 Full house full house RULL
Five and dime five and dime s t:
4 Skeet skeet 5 tr SKSE’L’
5 B aze blaze BLAZE
6 Every-thing e se (i.e., High card) high_earä str
From Wikiped a:
Big bobtail: A tour-card straighthush (four cards ot the same suit in consecutive order)_
2- Full house: three cards of one rank and two cards of another rank (exarnple: 3-3-3.J.U).
3_ Five and dime: Slow, 1 a-high, wit-I no pair (example: 5-6-7-8-10).
4- Skeet: A hand a 2, a 5, and a g, p us two other un.paired cards owerthan 9 (example:
2-4-5-6-9)_
Blaze: All cards are Jacks, queens, and/or Kings.
6- Hi” card: None ot the above.
A single card is encoded as an ASCII character_ Specificaty, the ASC code ranges employed are:
• 0141 Ox4D represent the A through ot Clubs
• Ox51 represent the A through ot Spades
• 0161 Ox6D represent the A through ot Diarmoncis
• 0171 Ox7LD represent then through ot Hearts
Note that the lett hexadecimal digit encodes the suit, and the right digit encodes the rank Valid ranks range 1 • 13 (Oxl • OXO). Note that 11, 12 and 13 (OxB, OxC, OXO) correspond with Jack, Queen and
King, respectively
For example, Ox63 represents the 3 of Diamonds and corresponds with tie ASCII character ‘c’. Likewise, 0148 represents the Jack ot Clubs and corresponds with the ASC I character
An example of a valid hand would be the string “uX[qT, which have ASCII codes:
• 0176 = 6 of Hearts
• 0158 = B of Spades
• 015B : Jack ot Spades
• 0171 = Ace ot Hearts
• 0164 = 4 of Diarmor.ds
Input Validation
Examples
Command-line Arguments Meaning of Input Expected Output
svros
P BE CEG EIG BOBTAIL
RULL

P WRu1F SKSE’L’
TRSYtJ

CARD
. I understand that representing another person’s work as my own is academically dishonest.
2. I understand that copying, even with modifications, a solution from another source (such as the web or another person> as a part of my answer constitutes plaq ansm.
How to Submit Your Work for Grading
To submit your hwkl .asm file for grading:
Go to the course website.
2. Click the Submit link for this assignment.
3. Type your SEIJ on the line provided.
A. Press the button marked Add file and follow the directions to attach purfi e.
5. Hit Submit to submit your file grading.
Oops. I messed up and I need to resubmit a file!
No worries! Just follow the steps again. We will grade only your last submission.

Reviews

There are no reviews yet.

Be the first to review “CSE 220: Systems Fundamentals I Solved”

Your email address will not be published. Required fields are marked *

Related products