Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CISC2001 Lab Project Assignment

9th Nov, 2022

1   Reminder

 Deadline: Before the final exam

• The two tasks are listed below, choose one that you prefer to complete.

2    Option 1: Instruction Set Research Report (100%)

2.1    Subtask 1: Mobile phone and desktop CPU (30%)

• Observe the instruction set used in your mobile phone and desktop CPU.

• Analyze the size of the following data types on your mobile phone and(or) desktop(laptop) by writing C programs.

– char, int, long int, long long int, char *, long *

• The content needs to include the following:

– The source code of the program;

– Screenshots of the program execution;

– A table of data type sizes.

2.2    Subtask 2: ARMv9 Instruction Set (70%)

• Learn the main contents of the ARMv9 instruction set (mainly base instructions). Documen- tation related to ARMv9: Link

•     – Elaboration of the instruction format;

– Giving examples of addressing methods and how they work;

– From an instruction perspective, compare and contrast ARMv9 and ARMv8.

2.3    Requirements

• The assignments have to be done individually, no collaboration with others.

• Plagiarism is strictly prohibited. If found, 0 will be given.

• Documents to be submitted: Research report. (The report should not exceed 4 pages.)

3    Option 2: Assembly Programming Project (100%)

3.1    Task Description

Design, code and test/debug an Aarch64 assembly program that performs the following:

1. Read in a line of character which contains from 1 to 100 bytes;

2. The characters/bytes represent UTF-8 encoding of Unicode Character;

3.  Count the number of Unicode characters in the input stream;

4. The result of the count should return as the exit code of the program with the following code:

1    . . .

2   //  Read  in   the   string   with   syscall   to   read ( fd ,   * buffer ,   len )

3   mov  x0 ,  #0                               //  fd   for   stdin

4   ldr  x1 ,  =buffer   //  load   the   address   of   buffer   to  x1

5   mov  x2 ,   #200                          //  number  of   character   to  be  read

6   mov  w8,  #63                            //   syscall#  for   read

7   svc  #0                      //  invoke   the   syscall

8  

9   //   after   the   call  ,   the  number  of  byte   read   in   should   stored   in  x0 10   //  and  the   input   bytes   are   store   in   buffer

11   //  This   i s   the   part   that  you  should  work  on  your  magic 12  

13   //   i . e . ,   count  the  number  of  Unicode   character   in   the   buffer

14   //   After   that ,   assumed  that   the   result   was  found  and  stored   in  x1 15   mov  x0 ,   x1       // save   the   result   as   exit   code   in  x0

16   mov  w8,  #93    //   service  #  for   exit

17   svc  #0

Note:  Since UTF-8 is a variable-length encoding scheme, the number of Unicode characters will not be the same as the number of bytes in the input string.

3.2    Testing

• To test your program, you can

1. download the test-tools.zip file in the attachment files;

2. copy the file to your emulator in the same directory as your source file;

3. run the following

1   unzip   test — tools . zip

2   chmod  +x   tester . sh

3   . / tester . sh  yourprogram

Where yourprogram is the name of your assembly program. For the first two instructions, you only need to run them once. After that, each time you modify your source code, you only need to run the last instruction to test your updated program.

• If the unzip program is not available in your system, you need to first install it with: 1   sudo  apt   i n s t a l l   unzip

 Note:

– The test-tools.zip is now the final version. It has all the 9 seen test cases. When grading your assignment, an additional unseen test case will be added to the test system.

– For some of the test data, you can see the actual content if you open them in a text editor. Just keep in mind that there is an invisible ”/n” at the end of each data file. So, the number of characters in the data should be one more than what you see inside the file.

3.3    Requirements

• The project should be completed by at most two students in a group;

• Write the complete information about your group members at the beginning of your source as remarks:

1   //  Group  Members :

2   //   1.  A—B0 — 1357 — 9  Chan  Tai  Man

3   //   2.  A—B0 — 2468 — 0  Lie  Kai  Ian

• Submissions that fail to achieve any one of the following will receive 0 marks:

– The submission must be made on or before the deadline;

– The submission must be the source code file of the assembled language program; (i.e.: filename.s)

– The program must be free of syntax error and must be able to be assembled and linked successfully by the test system;

– The program must pass at least one of the test cases in the test system;

• Marking

– Please fully document your code;

– Your final mark is directly proportional to the number of test cases that your program can pass;

• Documents to be submitted:  source code file  (i.e.:  filename.s);  Project report  (including screenshots of experimental results. The report should not exceed 4 pages.).