狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线

CIT 593代做、代寫Java/c++語言編程

時間:2024-07-24  來源:  作者: 我要糾錯


CIT 593 – Module 11 Assignment Instructions  
CIT 593 – Module 11 Assignment  
Making the LC4 Assembler Instructions  
Contents  
Assignment Overview 3  
Learning Objectives 3  
Advice 3  
Getting Started 4  
Codio Setup 4  
Starter Code 4  
Object File Format Refresher 4  
Requirements 5  
General Requirements 5  
Assembler 5  
assembler.c: main 5  
asm_parser.c: read_asm_file 6  
asm_parser.c: parse_instruction 6  
asm_parser.c: parse_add 6  
asm_parser.c: parse_xxx 6  
asm_parser.c: str_to_bin 7  
asm_parser.c: write_obj_file 7  
Extra Credit 8  
Suggested Approach 8  
High Level Overview 8  
Great High Level Overview, but I really need a Slightly More Detailed Overview 10  
Part 0: Setup the main Function to Read the Arguments 10  
Part 1: Read the .asm File 10  
Part 2: Parse an Instruction 1  
Part 3: Parse an ADD Instruction 1  
Part 4: Converting the binary string to an hexadecimal formatted integer 1  
Part 5: Writing the .obj object file 1  
Testing 1  
Validate Output with PennSim 1  
Files for Testing 1  
Unit Testing 1  
GDB for Debugging 1  
Submission 1  
Submission Checks 1  
The Actual Submission 1  
Page 1 of 24CIT 593 – Module 11 Assignment Instructions  
Grading 1  
Assembler 1  
Extra Credit 1  
An Important Note of Plagiarism 1  
FAQ 1  
Quick Hints 1  
Formatting 1  
Endianness 1  
Resources 1  
Page 2 of 24CIT 593 – Module 11 Assignment Instructions  
Assignment Overview  
From lecture you’ve learned that C is file-oriented and that working with files represents I/O  
devices in C.  
C files fall into two categories: "text" and "binary". In this assignment you’ll work with both types  
by reading in a text file and writing out a binary file.  
You will read an arbitrary .asm file (a text file intended to be read by PennSim) and write a .obj  
file (the same type of binary file that PennSim would write out).  
Aside from reading and writing out the files, your task will be to make a mini-LC4- Assembler!  
An assembler is a program that reads in assembly language and generates its machine  
equivalent.  
This assignment will require a bit more programming rigor than we’ve had thus far, but now that  
you’ve gained a good amount of programming skill in this class and in others, it is the perfect  
time to tackle a large programming assignment (which is why the instructions are so many  
pages).  
Learning Objectives  
This assignment will cover the following topics:  
● Review the LC4 Object File Format  
● Read text files and process binary files  
● Assemble LC4 programs into executable object files  
● Use debugging tools such as GDB  
Advice  
● Start early  
● Ask for help early  
● Do not try to do it all in one day  
Page 3 of 24CIT 593 – Module 11 Assignment Instructions  
Getting Started  
Codio Setup  
Open the Codio assignment via Canvas. This is necessary to link the two systems.  
You will see many directories and files. At the top-level workspace directory, the mail files are  
asm_parser.h, asm_parser.c, assembler.c, and PennSim.jar.  
Do not modify any of the directories or any file in any of the directories.  
Starter Code  
We have provided a basic framework and several function definitions that you must implement.  
assembler.c - must contain your main function.  
asm_parser.c - must contain your asm_parser functions.  
asm_parser.h - must contain the definition for ROWS and COLS  
- must contain function declarations for read_asm_file,  
parse_instruction, parse_reg, parse_add, parse_mul,  
str_to_bin, write_obj_file, and any helper function you  
implement in asm_parser.c  
test1.asm - example assembly file  
PennSim.jar - a copy of PennSim to check your assembler  
Object File Format Refresher  
The following is the format for the binary .obj files created by PennSim from your .asm files. It  
represents the contents of memory (both program and data) for your assembled LC-4 Assembly  
programs. In a .obj file, there are 3 basic sections indicated by 3 header “types” = Code , Data,  
and Symbol:  
● Code: 3-word header (xCADE, <address>, <n>), n-word body comprising the instructions.  
○ This corresponds to the .CODE directive in assembly.  
● Data: 3-word header (xDADA, <address>, <n>), n-word body comprising the initial data  
values.  
○ This corresponds to the .DATA directive in assembly.  
● Symbol: 3-word header (xC3B7, <address>, <n>), n-character body comprising the  
symbol string. These are generated when you create labels (such as “END”) in  
assembly. Each symbol is its own section.  
○ Each character in the file is 1 byte, not 2 bytes.  
○ There is no NULL terminator.  
Page 4 of 24CIT 593 – Module 11 Assignment Instructions  
Requirements  
General Requirements  
● You MUST NOT change the filenames of any file provided to you in the starter code.  
● You MUST NOT change the function declarations of any function provided to you in the  
starter code.  
● You MAY create additional helper functions. If you do, you MUST correctly declare the  
functions in the appropriate header file and provide an implementation in the appropriate  
source file.  
● Your program MUST compile when running the command make.  
● You MUST NOT have any compile-time errors or warnings.  
● You MUST remove or comment out all debugging print statements before submitting.  
● You MUST NOT use externs or global variables.  
● You MAY use string.h, stdlib.h, and stdio.h.  
● You SHOULD comment your code since this is a programming best practice.  
● Your program MUST be able to handle .asm files that PennSim would successfully  
assemble. We will not be testing with invalid .asm files.  
● Your program MUST NOT crash/segmentation fault.  
● You MUST provide a makefile with the following targets:  
○ assembler  
○ asm_parser.o  
○ all, clean, clobber  
Assembler  
assembler.c: main  
● You MUST not change the first four instructions already provided.  
● The main function:  
○ MUST read the arguments provided to the program.  
■ the user will use your program like this:  
./assembler test1.asm  
○ MUST store the first argument into filename.  
○ MUST print an error1 message if the user has not provided an input filename.  
○ MUST call read_asm_file to populate program[][].  
○ MUST parse each instruction in program[][] and store the binary string equivalent  
into program_bin_str[][].  
○ MUST convert each binary string into an integer (which MUST have the correct  
value when formatted with "0x%X") and store the value into program_bin[].  
○ MUST write out the program into a .obj object file which MUST be loadable by  
PennSim's ld command.  
Page 5 of 24CIT 593 – Module 11 Assignment Instructions  
asm_parser.c: read_asm_file  
This function reads the user file.  
● It SHOULD return an error2 message if there is any error opening or reading the file.  
● It MAY try to check if the input program is too large for the defined variables, but we will  
not be testing outside the provided limits.  
● It MUST read the exact contents of the file into memory, and it MUST remove any  
newline characters present in the file.  
● It MUST work for files that have an empty line at the end and also for files that end on an  
instruction (i.e. do not assume there will always be an empty line at the end of the file).  
● It MUST return 0 on success, and it MUST return a non-zero number in the case of  
failure (it SHOULD print a useful error message and return 2 on failure).  
asm_parser.c: parse_instruction  
This function parses a single instruction and determines the binary string equivalent.  
● It SHOULD use strtok to tokenize the instruction, using spaces and commas as the  
delimiters.  
● It MUST determine the instruction function and call the appropriate parse_xxx helper  
function.  
● It MUST parse ADD, MUL, SUB, DIV, AND, OR, XOR instructions.  
○ It MUST parse ADD IMM and AND IMM if attempting that extra credit.  
● It MUST return 0 on success, and it MUST return a non-zero number in the case of  
failure (it SHOULD print a useful error message and return 3 on failure).  
asm_parser.c: parse_add  
This function parses an ADD instruction and provides the binary string equivalent.  
● It MUST correctly update the opcode, sub-opcode, and register fields following the LC4  
ISA.  
● It SHOULD call a helper function parse_reg, but we will not be testing this function.  
● It MUST return 0 on success, and it MUST return a non-zero number in the case of  
failure (it SHOULD print a useful error message and return 4 on failure).  
asm_parser.c: parse_xxx  
You MUST create a helper function similar to parse_add for the other instruction functions  
required in parse_instruction.  
● They MUST correctly update the opcode, sub-opcode, and register fields following the  
LC4 ISA.  
● They SHOULD call a helper function parse_reg, but we will not be testing this function.  
● They MUST return 0 on success, and they MUST return a non-zero number in the case  
of failure (it SHOULD print a useful error message and return a unique error number on  
failure).  
Page 6 of 24CIT 593 – Module 11 Assignment Instructions  
asm_parser.c: str_to_bin  
This function converts a C string containing 1s and 0s into an unsigned short integer  
● It MUST correctly convert the binary string to an unsigned short int which can be verified  
using the "0x%X" format.  
● It SHOULD use strtol to do the conversion.  
asm_parser.c: write_obj_file  
This function writes the program, in integer format, as a LC4 object file using the LC4 binary  
format.  
● It MUST output the program in the LC4 binary format described in lecture and in the  
Object File Format Refresher section.  
● It MUST create and write an empty file if the input file is empty  
● It MUST change the extension of the input file to .obj.  
● It MUST use the default starting address 0x0000 unless you are attempting the .ADDR  
extra credit.  
● It MUST close the file with fclose.  
● It MUST return 0 on success, and they MUST return a non-zero number in the case of  
failure (it SHOULD print a useful error message and return 7 on failure).  
● The generated file MUST load into PennSim (and you MUST check this before  
submitting), and the contents MUST match the .asm assembly program  
 Page 7 of 24CIT 593 – Module 11 Assignment Instructions  
Extra Credit  
You may attempt any, all, or none of these extra credit options. You MUST test using your own  
generated examples (we will not provide any).  
Option 1: modify your read_asm_file function to ignore comments in .asm files. You MUST  
handle all types of comments for credit.  
Option 2: modify your program to handle ADD IMM and AND IMM instructions. Both MUST work  
completely for credit.  
Option 3: modify your program to handle the .CODE and .ADDR directives.  
Option 4: modify your program to handle the .DATA, .ADDR, and .FILL directives.  
Suggested Approach  
This is a suggested approach. You are not required to follow this approach as long as you  
follow all of the other requirements.  
High Level Overview  
Follow these high-level steps and debug thoroughly before moving on to the next.  
1. Initialize all arrays to zero or '狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线
  • <dl id="akume"></dl>
      <noscript id="akume"><object id="akume"></object></noscript>
    • <nav id="akume"><dl id="akume"></dl></nav>
      • <rt id="akume"></rt>
        <dl id="akume"><acronym id="akume"></acronym></dl><dl id="akume"><xmp id="akume"></xmp></dl>
        97超碰成人在线| 国产二区视频在线| 两根大肉大捧一进一出好爽视频| 国产精品啪啪啪视频| 一女二男3p波多野结衣| 亚欧美在线观看| 日本中文字幕高清| 在线观看日本一区二区| 天天插天天操天天射| 日韩精品视频一二三| 污污的网站免费| 国产又爽又黄ai换脸| 日本网站在线看| 欧美日韩一区二区三区电影| 在线观看日本www| 艳母动漫在线观看| 精品成在人线av无码免费看| 你真棒插曲来救救我在线观看| 欧美久久在线观看| 国产成人无码一二三区视频| 999精品视频在线| 不卡中文字幕在线| 日本韩国欧美在线观看| 成人黄色一区二区| 欧美日韩一区二区三区电影| 国产特级淫片高清视频| 不卡av免费在线| 欧美精品一区二区性色a+v| 免费在线看黄色片| 天天操天天爱天天爽| 天天综合五月天| 久久人妻精品白浆国产 | 中日韩av在线播放| 日韩 欧美 自拍| 波多野结衣家庭教师在线播放| 国产无套内射久久久国产| 超碰人人草人人| 欧美 日韩 国产 高清| 欧美视频亚洲图片| 大陆极品少妇内射aaaaa| а 天堂 在线| 欧美成人免费高清视频| 国产女人18毛片| 玖玖爱视频在线| 黄色免费观看视频网站| 欧美精品久久96人妻无码| 欧美污视频网站| 黄色片免费在线观看视频| 50路60路老熟妇啪啪| 久久观看最新视频| 天天综合天天添夜夜添狠狠添| 99999精品视频| 无码熟妇人妻av在线电影| 久久久久久综合网| 成人一区二区三| 激情五月婷婷六月| 大桥未久一区二区三区| 在线免费av播放| 国产三级日本三级在线播放| 男女啪啪免费视频网站| 国产片侵犯亲女视频播放| 一级日本黄色片| 911av视频| 女人高潮一级片| 蜜臀av免费观看| 亚洲人视频在线| 三级性生活视频| 色18美女社区| 一区二区三区日韩视频| 日日噜噜噜夜夜爽爽| av在线免费看片| 亚洲第一综合网站| 青青在线免费视频| 在线观看av的网址| av在线观看地址| 波多野结衣50连登视频| 日韩精品一区二区三区久久| 久久久久久久久久久久久久国产| 成人免费观看视频在线观看| av免费在线播放网站| 无遮挡又爽又刺激的视频| 三级在线视频观看| 久久久久久久高清| 国产乱人伦精品一区二区三区| 99er在线视频| 日韩中文字幕在线视频观看| 欧美精品无码一区二区三区| 久久成年人网站| 很污的网站在线观看| 亚洲精品无码久久久久久| 国产免费999| 波多野结衣 作品| 欧美aⅴ在线观看| 亚洲精品在线网址| 男女激情无遮挡| 亚洲综合伊人久久| 国产精品无码av在线播放| 五月激情婷婷在线| 激情伊人五月天| 一起操在线视频| 欧美视频在线播放一区| 国产女同无遮挡互慰高潮91| 男人的天堂狠狠干| 天天综合中文字幕| 色一情一乱一伦一区二区三区日本| 婷婷激情综合五月天| 97国产在线播放| 亚洲国产一二三精品无码| 久久婷婷国产91天堂综合精品| 99精品一级欧美片免费播放| 欧美激情成人网| www.99热这里只有精品| 毛片毛片毛片毛片毛| 久久人妻精品白浆国产| 无码日本精品xxxxxxxxx| 午夜久久福利视频| 欧美成人免费高清视频| 蜜臀精品一区二区| 青青草原网站在线观看| 成年网站在线播放| 欧美一级黄色影院| 亚洲熟女乱色一区二区三区| a级免费在线观看| 色一情一乱一乱一区91| aaa一级黄色片| 午夜大片在线观看| 久久久久xxxx| 99久久99精品| 小说区视频区图片区| 日本黄色的视频| 久久久精品高清| 女同激情久久av久久| 在线免费观看视频黄| 在线免费观看视频黄| 不卡av免费在线| 黄大色黄女片18第一次| 69久久久久久| 午夜福利123| 波多野结衣三级在线| 成人免费看片视频在线观看| 超级碰在线观看| 国产日韩av网站| 国产a级片免费观看| 一区二区在线播放视频| 激情五月俺来也| 亚洲综合在线一区二区| www国产无套内射com| 欧美成人三级在线视频| www.四虎成人| 在线视频一二区| 欧美亚洲色图视频| 国产aaa一级片| 杨幂毛片午夜性生毛片| 久久久国产精华液999999| 久久久国产精华液999999| 强开小嫩苞一区二区三区网站| 国产精品三级一区二区| 国产男女无遮挡| 57pao国产成永久免费视频| 亚洲精品少妇一区二区| 成年人视频网站免费观看| 国产一伦一伦一伦| 久久精品xxx| 超碰超碰在线观看| 亚洲色成人www永久在线观看| 国产极品粉嫩福利姬萌白酱| 午夜精品久久久久久久99热影院| 中文字幕日韩精品无码内射| 成熟丰满熟妇高潮xxxxx视频| 亚洲一区在线不卡| 男女啪啪免费视频网站| 九九热精品国产| 日批视频在线免费看| 好吊色视频988gao在线观看| 欧美日韩第二页| 黄色特一级视频| 在线一区二区不卡| 国产妇女馒头高清泬20p多| 欧美成人乱码一二三四区免费| 欧美一区二区中文字幕| www.午夜色| 天天操天天干天天做| 国产成人精品视频ⅴa片软件竹菊| 小说区视频区图片区| 中文字幕永久有效| 午夜激情福利在线| 欧美在线观看成人| 一本久道高清无码视频| 色一情一乱一乱一区91| 午夜激情视频网| 男人午夜视频在线观看| www亚洲成人| 国语对白做受xxxxx在线中国| 国产真人做爰毛片视频直播| 看全色黄大色大片| 国产欧美精品一二三| 国产中文字幕视频在线观看| 51xx午夜影福利| 久久免费视频2| 亚洲免费在线播放视频|