联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Algorithm 算法作业Algorithm 算法作业

日期:2024-07-23 10:40

• All instruc+ons (including opcodes and operand 'R') are in upper-case

• OPCODES are as per instruc+ons (if EC is considered then OPCODES can be anything

from the upper part of the Instruc+ons worksheet)

• OPERANDS are the registers in the format R[0-7]

• General format for the instruc+on line is: <space>*[OPCODE]<space>+

[OPERAND1](<space>*<comma><space>* | <space>+)

[OPERAND2](<space>*<comma><space>* | <space>+)

[OPERAND3]<space>*<\n>?

• Therefore: there can be

o 0 or more leading spaces, then

o OPCODE, then

o 1 or more spaces between OPCODE and the first OPERAND, then

o the first OPERAND, then

o EITHER 0 or more spaces followed by 1 comma followed by 0 or more spaces OR

1 or more spaces, then

o the second OPERAND, then

o EITHER 0 or more spaces followed by 1 comma followed by 0 or more spaces OR

1 or more spaces, then

o the third OPERAND or IMMEDIATE VALUE (for EC2), then

o 0 or more trailing spaces followed by 0 or 1 newline characters (‘\n’)

• End of line: there can be trailing spaces, newline symbol or just EOF (end of file) if it is

the last line in the .asm file (make sure that your code works for the file where the last

line doesn’t contain the newline character)

• Every line that is formaded not in accordance with the rules before should be treated as

erroneous thus the respec+ve error should be thrown, and the program should

gracefully terminate if such line is faced.

Examples (this is not and exhaus+ve list! You should handle all the cases, not only those, using

the rules above and those are for illustra+ve purposes only):

Valid Invalid

ADD R1, R2, R3

MUL R0 R1 R2

SUB R2, R4 R7

AND R7 , R5 R4

ADD R1R2,R3

MUL, R0, R1, R2

,SUB R2 R4 R7

AND R7,,R5 R4

Extra credit:

• EC1: cases required to add to complete it:

o line consis+ng of the comment only - star+ng with 0 or more leading spaces and

‘;’ - should be treated as comment and ignored (i.e. should not produce an error)

o the correct instruc+on followed by 0 or more spaces and ‘;’ should be treated as

normal instruc+on and the part star+ng with those 0 or more trailing spaces and

‘;’ should be just ignored. o empty lines between instruc+ons should be ignored.

o lines containing only spaces should be ignored.

• EC2: immediate values in decimal with “#” sign in front or hex with “0x” or “x” in front:

#-?[0-9]+ for decimal and 0?x[0-9a-fA-F]+ for hex. The immediate supported in ADD and

AND instruc+on is a 5-bit 2C number, so it is required to check the range of the input

immediate and raise an error if it is out of range. Hex numbers that formally occupy

more than 5 bits (i.e. xFF) should be treated as errors therefore there are only 16 op+ons

for hex numbers to be valid immediate values. Decimal number can be nega+ve too i.e.

both #-5 and #5 should be parsed correctly for example and give different results.

Decimal numbers occupying more than 5 bits in 2C nota+on should produce an error.

• EC3: Address is formaded as x4020 so it can be assumed that addresses are always in

xHHHH format. Check that the address is within the legal range - user memory for code

(0x0000~0x1FFF) and data (0x2000~0x7FFF) – should be performed. There’s no need to

bother with overlapping addresses (we won’t check that) but overflow needs to be

checked vs bounds: if the address is x1FFF and the respec+ve .CODE sec+on contains 2

instruc+ons – error (“overflow”) should be thrown. The same applies to the overflow of

the .DATA region.

• EC4: it requires the implementa+on of .DATA, .ADDR and .FILL (pseudo)-instruc+ons only

and also the processing of the respec+ve IMMEDIATE values (i.e. size can be different for

the different instruc+ons and signed and unsigned IMMs should be dis+nguished when

necessary).


相关文章

版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp